我有一个 WinForms 应用程序,我希望能够在其中提供 HTML 编辑功能。因此,我将Lutz Roeder 的 HTML Writer从 C# 转换为 VB.NET,并将其从 windows 窗体转换为自定义用户控件,该控件现在托管在 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,当它中断时我没有得到任何有用的东西 - 只是“没有可用的源”。