我正在寻找关于win32异常“创建窗口句柄的错误”的一些帮助。 我们的程序(WinForms - C#)有时会抛出此异常,有时窗口甚至会冻结,因此用户必须启动该过程才能再次工作。
从关于这个问题的许多其他线索中,我知道我应该寻找什么,但不是在我们的程序非常大的地方。所以我希望有一种方法可以限制我必须检查的代码行......是否有任何工具可以帮助解决这个异常?
答案 0 :(得分:1)
简短更新:我解决了这个问题。
ProcDump对我帮助不大,因为我从日志文件中获得了相同的信息。但是,我能够在我们的开发环境中重现错误。感谢调试器并在taskmanager中显示用户对象计数,我找到了memoryleak的来源 - 一个动态创建的未曝光的texbox。
再次感谢您的提示!
答案 1 :(得分:0)
如果在调试器中发生此问题,您可以设置调试器(我将假设Visual Studio,因为您正在使用C#?)来打破抛出异常。在您的情况下,您可能希望在(我认为)System.ComponentModel.Win32Exception
上设置异常断点。
再次假设Visual Studio作为您的IDE,在“Debug”菜单上是“Exceptions ...”项。这允许您告诉调试器在抛出特定异常时中断,或者b)未处理。
在公共语言运行时例外下,展开System.ComponentModel
,然后启用System.ComponentModel.Win32Exception
的“投掷”列中的复选框。
然后正常进行。如果在调试期间发生异常,它应该进入你的程序并让你看看它发生了什么。
编辑:如果无法在开发计算机上重现问题,请查看是否能够在发生崩溃时设置目标计算机以生成转储。一种方法是运行ProcDump。使用-e
参数运行它以在发生异常时创建转储。然后你可以在牧场分析这个。