ユーザーが次のようなエラーを報告するたびに
System.Runtime.InteropServices.SEHException - 外部コンポーネントが例外をスローしましたか?
原因を特定するためにプログラマーとしてできることはありますか?
シナリオ : 1 人のユーザー (私の会社が作成したプログラムを使用) がこのエラーを報告しました。これは、1 回限りのエラーである場合とそうでない場合があります。彼らは、先月、コンピューターが 2 回「動作を停止」したと述べました。私は経験から、この説明をあまり文字通りに受け取らないように学びました。これは通常、コンピュータに関係する誰かが期待どおりに機能していないことを意味するためです。彼らは詳細を教えてくれませんでしたし、ログに記録されたエラーも見つかりませんでした。したがって、このエラーである場合とそうでない場合があります。
スタック トレースから、実際のエラーは、相互運用コードを直接呼び出さないクラスを構築するときに発生しましたが、オブジェクトが DevExpress グリッドにデータバインドされたリストの一部である可能性があるという事実によって複雑になった可能性があります。
エラーは、通常はプログラムを終了する未処理の例外ルーチンによって「キャッチ」されましたが、無視して続行するオプションがあります。エラーを無視することを選択した場合、プログラムは引き続き動作しますが、このルーチンが次に実行されたときにエラーが再発しました。ただし、アプリケーションを閉じて再起動した後、再び発生することはありませんでした。
問題のコンピューターにストレスがかかっているようには見えませんでした。それは Vista Business を実行しており、2GB のメモリを搭載しており、タスク マネージャーによると、約 200Mb のアプリケーションでその約半分しか使用していませんでした。
関連する場合と関連しない場合がある情報がもう 1 つあります。同じプログラムの別のセクションでは、実質的にネイティブ dll のドットネット ラッパーであるサード パーティ製コンポーネントを使用しています。このコンポーネントには既知の問題があり、まれに、
保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています
コンポーネントメーカーは、これは社内で使用しているコンポーネントの最新バージョンで修正されていると言っていますが、これはまだ顧客に提供されていません.
エラーの影響が少なく (作業が失われることはなく、プログラムを再起動して元の場所に戻るのにせいぜい 1 分しかかからない)、顧客がまもなく新しいバージョンを取得することを考えると (更新された 3 番目のバージョンを使用)パーティーコンポーネント)、私は明らかに指を交差させ、エラーが再び発生しないことを願っています.
しかし、これ以上私にできることはありますか?