首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Win32Exception:成功完成操作

Win32Exception:成功完成操作
EN

Stack Overflow用户
提问于 2011-12-11 16:19:33
回答 2查看 6.7K关注 0票数 6

以下代码除例外情况外会崩溃:

代码语言:javascript
复制
MyWindow wnd = new MyWindow();
wnd.Show(); //here an exception occurs

异常相当奇怪,但据我所知,它是.net中的一个bug。

代码语言:javascript
复制
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对象时,就会发生这种情况。

解决方案:原因是objects.They在我的低级代码中创建了一个包含错误的GDI objects.They。因此,这个问题与MyWindow对象.无关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-11 17:40:26

它不会轰炸一个winapi错误代码,实际的错误代码是E_FAIL,一个COM错误代码。这对诊断任何事情都是毫无帮助的,它并不意味着“做不到,也不知道为什么”。GetDC()如何产生错误代码是很难猜测的,我怀疑这是与winapi函数挂钩的环境问题。可能类似于远程桌面或屏幕记录器。请尝试在另一台机器上运行此程序。

GetDC()失败的“正常”原因是句柄泄漏。当进程已经消耗了10,000个句柄时,Windows将停止提供更多的句柄。您可以使用TaskMgr.exe,Processes选项卡进行诊断。视图+选择列和滴答句柄,用户对象和GDI对象。首先,检查进程列表,并验证您没有消耗大量进程的进程。会话中所有进程的GDI对象总数受到会话池大小的限制。接下来,运行您的程序,并密切关注您的进程的值。

票数 10
EN

Stack Overflow用户

发布于 2013-01-31 17:32:44

我们的项目也有这个问题..。

我们把所有的视图和视图模型堆叠起来,然后逐一显示。解决方案是在不生成堆栈的情况下逐个显示元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8465464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档