HTML 編集機能を提供できるようにしたい WinForms アプリケーションがあります。そこで、Lutz Roeder の HTML Writerを C# から VB.NET に変換し、それを Windows フォームからカスタム ユーザー コントロールに変換しました。これは現在、MDI 子フォームでホストされています。
親 MDI を閉じるまではすべて問題なく動作しますが、親 MDI を閉じるとクラッシュし、例外をトラップできません。
エディター コントロールを、他に何もしない小さなバニラ WinForms アプリに分離し、問題が引き続き発生することを確認しました。
アンマネージ コードのデバッグもオンにしました (VS2010 を使用し、x86 および Framework 3.5 用にコンパイルしています)。得られるのは次のとおりです。
Windows has triggered a breakpoint in HtmlEditorMdi.exe.
This may be due to a corruption of the heap, which indicates a bug in HtmlEditorMdi.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while HtmlEditorMdi.exe has focus.
The output window may have more diagnostic information.
私が気付いた唯一のことは、エディターを含むフォームを開いた後、長い間隔を空けても、クラッシュしないことです。
私が本当に感謝しているのは、この問題を探す方法についてのアイデアです。もちろん、C# から VB への変換を間違えたのかもしれませんが、どこを見ればよいのかわかりません。
編集:
デバッガーをアタッチしてアプリを実行しましたが、何も役に立ちません。
Windows の「アプリケーションが動作を停止しました」というメッセージが表示され、問題の詳細に次のように表示されます。
Problem signature:
Problem Event Name: APPCRASH
Application Name: HtmlEditorMdi.exe
Application Version: 1.0.0.0
Application Timestamp: 4cfb74c7
Fault Module Name: mscorwks.dll
Fault Module Version: 2.0.50727.4952
Fault Module Timestamp: 4bebd49a
Exception Code: c0000005
Exception Offset: 000022b5
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 2057
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
アクセス違反であることがわかりますが、Debug > Exceptions > Win32 Exceptionsに移動してc0000005にチェックを入れても、壊れたときに何も役に立ちません-「利用可能なソースがありません」だけです。