如何解决winforms错误“在GDI +中发生了一般性错误。 “?

我在我的C#.net赢得窗体应用程序面临以下exception。

在GDI +中发生了一个通用错误。
在System.Drawing.Graphics.CheckErrorStatus(Int32状态)
在System.Drawing.Graphics.DrawRectangle(笔笔,Int32 x,Int32 y,Int32宽度,Int32高度)
在WeifenLuo.WinFormsUI.Docking.DockWindow.OnPaint(PaintEventArgs e)
在System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e,Int16层,布尔disposeEventArgs)
在System.Windows.Forms.Control.WmPaint(Message&m)
在System.Windows.Forms.Control.WndProc(Message&m)
在System.Windows.Forms.ScrollableControl.WndProc(Message&m)
在System.Windows.Forms.Control.ControlNativeWindow.OnMessage(消息&m)
在System.Windows.Forms.Control.ControlNativeWindow.WndProc(消息&m)
在System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd,Int32 msg,IntPtr wparam,IntPtr lparam)

最令人困惑的是,应用程序加载表单(包含一些丰富的graphics,WPF工作等)可能会说约90%的时间表单载入成功时,很less发生。 但很less有这种情况发生,只有在一些机器上,在其他一些机器上,这种forms是百分之百的工作时间,从来没有面对这个例外。

我不明白为什么会发生这种exception,因为它也没有显示导致exception的确切的堆栈跟踪。 请build议如果有任何关于如何处理它的想法。

Solutions Collecting From Web of "如何解决winforms错误“在GDI +中发生了一般性错误。 “?"

你的代码很可能泄漏GDI资源。 看看Taskmgr.exe,进程选项卡。 查看+选择列并勾选句柄,USER对象和GDI对象。 运行你的程序,观察你的进程的显示值。 GDI对象不断攀升的价值是麻烦的,当它达到10,000时,节目就结束了。

究竟是什么可能导致泄漏不是很容易诊断。 尽管您可以在调试器中单步执行代码,并留意taskmgr编号。 经典的错误是在Paint事件处理程序中创建笔和画笔,而不是处理它们。 没有垃圾收集器运行通常足以清理。 使用using语句来修复。