2008-09-11 8 views
3

몇 시간 동안 응용 프로그램을 사용한 후 다음과 같은 오류가 발생하여 스택을 동시에 호출합니다. 어떤 일이 일어나고 있는지 누군가가 알 수 있습니까?BufferedGraphicsContext 오류

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) 

답변

3

이 오류에 대한 매우 긴 MSDN 포럼 토론이 있습니다 (here). 대부분의 경우 오류는 다음 중 하나와 분명히 관련되어 있습니다.

  1. 아마도 프레임 워크 버그로 인해 BufferedGraphicsContext 예외로 나타나는 기본 OutOfMemory 문제입니다.
  2. GDI 개체 누수 (GDI 개체 만들기 및 삭제).

이 오류는 1 년 전의 일이며, 장기적으로 사용 가능한 모든 VM을 채우는 메모리 문제와 분명히 연관되어 있으므로 # 1은 내가 본 것에 동의합니다 .

+0

게시물을 보내 주셔서 감사합니다. 문제의 원인처럼 들립니다. – joek1975

0

어둠 속에서 촬영 - 여러 스레드에서 페인팅 하시겠습니까? 페인팅 관련 작업을 수행하는 경우 GUI 스레드에서 수행하거나 코드를 신중하게 동기화하십시오.

+0

저는 믿을 수 없습니다. – joek1975

1

나는이 문제가 오래되었다는 것을 알고 있지만 같은 문제가 있었고 발견했다. 수동 더블 버퍼링을 구현 한 여러 컨트롤을 사용했을 때만 나타났다.

은 나를 위해, 나는이 시점에서 문제가 발견 :

BufferedGraphicsContext _BackbufferContext = BufferedGraphicsManager.Current; 

그래서 내 모든 컨트롤은 내가 항상 동일 가정합니다 현재 컨텍스트를 사용했다. 내가 이것을 바꾼 후에

BufferedGraphicsContext _BackbufferContext = new BufferedGraphicsContext(); 

모든 것이 원했던 것처럼 작동합니다.

조금 도움이 되었기를 바랍니다.