gpt4 book ai didi

windows - 如何解决 winforms 错误 "A generic error occurred in GDI+. "?

转载 作者:可可西里 更新时间:2023-11-01 13:52:25 24 4
gpt4 key购买 nike

我在我的 C#.net win 表单应用程序中遇到以下异常。

A generic error occurred in GDI+.
at System.Drawing.Graphics.CheckErrorStatus(Int32 status)
at System.Drawing.Graphics.DrawRectangle(Pen pen, Int32 x, Int32 y, Int32 width, Int32 height)
at WeifenLuo.WinFormsUI.Docking.DockWindow.OnPaint(PaintEventArgs e)
at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
at System.Windows.Forms.Control.WmPaint(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

最令人困惑的一点是,当应用程序加载一个表单(包含一些丰富的图形、WPF 工作等)时,它很少发生,可以说大约 90% 的时间表单加载成功。但它碰巧被复制的次数很少,而且也只在某些机器上,在其他一些机器上,这种形式 100% 有效,永远不会遇到这种异常。

我不知道为什么会发生这种异常,因为它也没有显示导致异常的确切堆栈跟踪。如果有人对如何处理它有任何想法,请提出建议。

最佳答案

您的代码可能严重泄漏了 GDI 资源。查看 Taskmgr.exe,进程选项卡。查看 + 选择列并勾选句柄、用户对象和 GDI 对象。运行程序并观察过程的显示值。 GDI 对象的值不断攀升会带来麻烦,达到 10,000 时表演结束。

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

关于windows - 如何解决 winforms 错误 "A generic error occurred in GDI+. "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9362184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com