Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “如何查找win32异常的源”;创建窗口句柄时出错";_C#_Winforms_Winapi_Window Handles - Fatal编程技术网

C# “如何查找win32异常的源”;创建窗口句柄时出错";

C# “如何查找win32异常的源”;创建窗口句柄时出错";,c#,winforms,winapi,window-handles,C#,Winforms,Winapi,Window Handles,我正在寻找有关win32异常“创建窗口句柄时出错”的一些帮助。 我们的程序(WinForms-C#)不时抛出此异常,有时windows甚至会冻结,因此用户必须启动进程才能再次工作 从关于这个问题的许多其他线程中,我知道我应该寻找什么,但不知道具体在哪里,因为我们的程序相当大。所以我希望有一种方法可以限制我必须检查的代码线。。。是否有任何工具可以帮助处理此异常?如果此问题发生在调试器内部,则可以设置调试器(我假设Visual Studio正在使用C#?)在引发异常时中断。在您的情况下,您可能希望在

我正在寻找有关win32异常“创建窗口句柄时出错”的一些帮助。 我们的程序(WinForms-C#)不时抛出此异常,有时windows甚至会冻结,因此用户必须启动进程才能再次工作


从关于这个问题的许多其他线程中,我知道我应该寻找什么,但不知道具体在哪里,因为我们的程序相当大。所以我希望有一种方法可以限制我必须检查的代码线。。。是否有任何工具可以帮助处理此异常?

如果此问题发生在调试器内部,则可以设置调试器(我假设Visual Studio正在使用C#?)在引发异常时中断。在您的情况下,您可能希望在(我认为)
System.ComponentModel.Win32Exception
上设置一个异常断点

再次假设Visual Studio是您的IDE,“调试”菜单上有一个“异常…”项。这允许您在a)抛出或b)未处理特定异常时通知调试器中断

在公共语言运行时异常下,展开
System.ComponentModel
,并启用
System.ComponentModel.Win32Exception
的抛出列中的复选框

那就照常进行吧。如果在调试过程中发生异常,它应该会进入您的程序,并允许您查看发生异常的位置


编辑:如果无法在开发机器上重现问题,请查看是否能够将目标机器设置为在崩溃发生时生成转储。一种方法是跑步。使用
-e
参数运行它,以在发生异常时创建转储。然后你可以回到牧场分析这个问题。

简短更新:我解决了这个问题

ProcDump对我帮助不大,因为我从日志文件中得到了几乎相同的信息。然而,我能够在我们的开发环境中重现错误。多亏了调试器并在taskmanager中显示了用户对象数,我找到了memoryleak的源代码——一个动态创建的未经分解的texbox


再次感谢你的提示

您好,谢谢您的回答,是的,我正在使用Visual Studio 2012。但是,我还不能在本地机器上重现这个问题,而且我们在用户机器上没有任何管理员权限来安装studio。但我将继续尝试复制错误-这次使用正确配置的调试器。谢谢你的提醒,我已经完全忘记了这个选项,在我所有的(绝望的)尝试去寻找这个来源…我已经添加了一些可能有用的信息,关于创建可在以后分析的小型转储。ProcDump的
-e
命令行参数仅在出现未处理的异常时才会写入小型转储。考虑到大多数C#代码的性质,未经处理的异常非常罕见。您可能希望使用
-e1
来获得首次机会异常的小型转储。请注意,这可能会产生很多小转储。@IInspectable:好吧,我没有意识到,不是一个C#person。。。但至少它们是小垃圾:)嗨,再次谢谢。我会尝试一下,看看是否能得到有用的信息。也许还要一段时间,直到我能回来报到。