.NET でのアクセス違反エラーの一般的な原因を探しています。
これまでに確認したこと -
- IDisposable を実装するすべてのオブジェクトで Dispose を呼び出す
- COM オブジェクトへの呼び出しで有効な引数を確認する
- 手動で追加されたすべてのイベント ハンドラーを明示的に削除する
- 明示的に GC.Collect/GC.WaitForPendingFinalizers を呼び出さないでください
- ネイティブ オブジェクト (ビットマップなど) を処理する際のメモリ プレッシャーの追加と削除(追加)
- 有効な引数の型に対するすべての PInvoke 呼び出しを確認する
- IntPtr、SafeHandle、HandleRef の適切な使用を確認する
- スレッディング (スレッド セーフ、再入可能関数)、待機ハンドルの適切な使用。(追加)
- アプリケーションと DLL がすべて同じプラットフォーム (x86 または x64) をターゲットにしていることを確認します (アプリケーションと DLL は、COM オブジェクトと同じプラットフォームをターゲットにする必要があります) (追加) 。
他の提案はありますか?
編集- クラッシュ ダンプ分析を別の質問に移動しました。