2008-11-11 134 views
1

我有一个用户不断收到此错误。有没有一个工具,窗口句柄计数,我可以用它来弄清楚为什么他一直得到这个错误。Winforms中的窗口句柄调试

System.ComponentModel.Win32Exception:创建窗口句柄时出错。 在System.Windows.Forms.NativeWindow.CreateHandle(的CreateParams CP) 在System.Windows.Forms.Control.CreateHandle() 在System.Windows.Forms.Form.CreateHandle() 在System.Windows.Forms.Control的.get_Handle() 在System.Windows.Forms.Form.ShowDialog(IWin32Window所有者)

+0

您需要关于此行为的更多信息。 这个问题可以解决几种情况。 – TcKs 2008-11-11 10:55:08

回答

1

我知道的最好的计数器是Taskmgr.exe。查看+选择列并选中“用户对象”,“处理计数”和“GDI对象”。

通用诊断是你泄漏手柄并消耗了10,000个手柄。谨防.NET 2.0 SP1和.NET 3.5的Graphics.CopyFromScreen()在3.5 SP1中修复的句柄泄漏问题。

1

也许这可以帮助:

Unhandled exception Win32Exception,Error creating window handle

CLR Debugger (DbgCLR.exe)

对矿井

机器调试程序位于:

"c:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\GuiDebug\DbgCLR.exe"
+0

你可以从哪里下载这个..我似乎没有在我的机器上。 – leora 2008-11-12 09:47:24

+0

我不确定。我用Visual Studio安装它。也许你应该从http://www.microsoft.com/downloads/details.aspx?familyid=fe6f2099-b7b4-4f47-a244-c96d69c35dec&displaylang=en – 2008-11-19 11:57:40

2

如果您正在创建的表单覆盖WndProc(),请注意确保它在窗口创建过程中始终调用base.WndProc()。

我不小心忽略了一个调用base.WndProc()在我的覆盖,并得到你的堆栈跟踪。