c# – Win32Exception:操作成功完成
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Win32Exception:操作成功完成,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1536字,纯文字阅读大概需要3分钟。
内容图文
以下代码崩溃,但有异常:
MyWindow wnd = new MyWindow();
wnd.Show(); //here an exception occurs
异常是相当奇怪的,但据我所知,它是.net中的一个错误
System.ComponentModel.Win32Exception (0x80004005): The operation completed successfully
at MS.Win32.UnsafeNativeMethods.GetDC(HandleRef hWnd)
at System.Windows.Interop.HwndTarget..ctor(IntPtr hwnd)
at System.Windows.Interop.HwndSource.Initialize(HwndSourceParameters parameters)
at System.Windows.Interop.HwndSource..ctor(HwndSourceParameters parameters)
at System.Windows.Window.CreateSourceWindow(Boolean duringShow)
at System.Windows.Window.CreateSourceWindowDuringShow()
at System.Windows.Window.SafeCreateWindowDuringShow()
at System.Windows.Window.ShowHelper(Object booleanBox)
at System.Windows.Window.Show()
MyWindow对象是一个内部有一些矢量图形的窗口,但不是太多.此外,它已经在10-20个MyWindow对象已经打开和关闭时发生.
解决方案:原因是GDI对象泄漏.他们在我的低级代码中创建包含错误.所以,问题与MyWindow对象无关.
解决方法:
它不会弹出一个winapi错误代码,实际的错误代码是E_FAIL,一个COM错误代码.这对于诊断任何东西都是无益的,它并不意味着“不能做到,不知道为什么”. GetDC()如何产生错误代码是非常难以猜测的,我怀疑它是环境与钩子winapi函数挂钩.也许类似于远程桌面或屏幕录像机.尝试在另一台机器上运行它.
GetDC()失败的“正常”原因是句柄泄漏.当Windows已经消耗了10,000个句柄时,它就会停止为进程提供更多句柄.您可以使用TaskMgr.exe,进程选项卡诊断的东西.查看选择列并勾选句柄,用户对象和GDI对象.首先检查进程列表,并验证您没有消耗大量进程的进程.会话中所有进程的GDI对象总数受会话池大小的限制.接下来运行您的程序并密切关注您的过程的值.
内容总结
以上是互联网集市为您收集整理的c# – Win32Exception:操作成功完成全部内容,希望文章能够帮你解决c# – Win32Exception:操作成功完成所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。