ExecuteEngineException に関しては、.net Framework SDK に次の説明があります。
「実行エンジン エラーは致命的なエラーであり、決して発生してはなりません。このようなエラーは主に、実行エンジンが破損したりデータが失われたときに発生します。システムはいつでもこの例外をスローします。」可能な場合、システムは ExecutionEngineException よりも多くの情報を提供する例外をスローします。
この
説明からわかるように、ExecutionEngineException は通常のプログラムでは発生しません。しかし、今日私はこの異常に何度も遭遇しました。
具体的な状況はおおよそ次のとおりです。.net で使用される、ビューア機能を備えた COM コントロール。このビューアには、現在の表示領域で特定の変化が発生すると 2 つのイベントがトリガーされるという機能があり、より具体的な場合、これら 2 つのイベントのトリガー間の時間差は非常に小さく、ほぼ同時に発生する可能性があります。このとき、外部の .net プログラムによって ExecutionEngineException が発生する可能性が非常に高くなります。基本的に、すべての操作で少なくとも 1 回は発生します。もちろん、一度発生すると発生するのは 1 回だけです。ほとんどクラッシュします。
これは、.net が COM と対話するときに発生する問題であるはずです。具体的なプロセスはわかりませんが、おおよその推測はできます。最初のイベントが発生したとき、.net はその処理を開始し、その処理が完了する前に、第二の出来事 事件は再び起こり、異常が生まれました。
理由がわかれば対処しやすいですよ。イベント一時停止メカニズムを追加して、2 つのイベントのトリガー時間間隔が短すぎて、ほぼ同時にトリガーされる 2 つのイベントの再発を避けることができます。案の定、一度試してみたところ、この異常は発生しなくなりました。同様の現象に遭遇した場合は、このアイデアを試してみるとよいでしょう。
PS、ここで使用している環境は .net Framework 1.1 です。.net Framework 2.0 で同じ現象が発生するかどうかはまだ不明です。
http://www.cnblogs.com/sunwaywei/archive/2006/08/21/482674.html