winforms - BufferedGraphicsContext 错误

标签 winforms multithreading exception gdi+

在使用应用程序几个小时后,我每天都会同时收到以下错误和调用堆栈。谁能解释一下正在发生的事情吗?

System.InvalidOperationException: BufferedGraphicsContext cannot be disposed of because a buffer operation is currently in progress.

at System.Drawing.BufferedGraphicsContext.Dispose(Boolean disposing)

at System.Drawing.BufferedGraphicsContext.Dispose()

at System.Drawing.BufferedGraphicsContext.AllocBufferInTempManager(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle)

at System.Drawing.BufferedGraphicsContext.Allocate(IntPtr targetDC, Rectangle targetRectangle)

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.ToolStrip.WndProc(Message& m)

at System.Windows.Forms.MenuStrip.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)

最佳答案

MSDN 论坛对此错误有很长的讨论 here 。在大多数情况下,错误显然与以下任一相关:

  1. 潜在的 OutOfMemory 问题,表现为 BufferedGraphicsContext 异常,可能是由于框架错误造成的。
  2. GDI 对象泄漏(创建 GDI 对象而不释放它们)。

我记得大约一年前我自己看到了这个错误,它肯定与内存问题有关,导致我们的应用程序在长时间运行后填满了所有可用的虚拟机,所以#1 与我所观察到的一致。

关于winforms - BufferedGraphicsContext 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57766/

相关文章:

java - 如何捕获 JSP 文件中的异常?

c# - 标签自动换行

java - 通过管道发送对象

ios - 从错误线程访问的 Realm

java - Eclipse 插件 : java. lang.NoClassDefFoundError

java - 为什么在添加抛出时包装异常仍然请求 try-catch?

c# - 如何在工具条按钮位置打开表单

c# - 使用 MySQL.NET 连接器连接

c# - 具有 Type 类型属性的 UserControl

java - java线程间通信