0

似たようなものに出会ったことがありますか?例外タイプ:System.ComponentModel.Win32Exception例外メッセージ:操作は正常に完了しました。例外スタックトレース:

------------------------
   at System.Drawing.BufferedGraphicsContext.CreateCompatibleDIB(IntPtr hdc, IntPtr hpal, Int32 ulWidth, Int32 ulHeight, IntPtr& ppvBits)
   at System.Drawing.BufferedGraphicsContext.CreateBuffer(IntPtr src, Int32 offsetX, Int32 offsetY, Int32 width, Int32 height)
   at System.Drawing.BufferedGraphicsContext.AllocBuffer(Graphics targetGraphics, IntPtr targetDC, Rectangle targetRectangle)
   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 DevExpress.XtraEditors.Container.EditorContainer.WndProc(Message& m)
   at DevExpress.XtraGrid.GridControl.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)

グラフィックスオブジェクトが1つ使用されているアプリのどこでも、を使用して使用されるため、破棄が有効になります。

ありがとう。

4

1 に答える 1

0

同様の問題がいくつかありました。アプリケーションでメモリ リークが発生しているようです。私たちも同様の問題を抱えており、どこを何を修正すべきかを見つけるのに長い時間がかかりました.

一般に、Win フォーム コンポーネントの Dispose メソッドを非表示にして使用しなくなったときに呼び出されるかどうかを確認することをお勧めします。ただし、メモリ リークがあるかどうか、およびどこを修正すればよいかを確認するには、優れたメモリ プロファイラーが必要です。

少なくとも私たちの場合、これらの win32 例外は解決されました。

編集:あなたのケースで破棄が有効になっているのを見たばかりですが、すべての呼び出しを確認することをお勧めします! また、Dispose が呼び出されると考えていましたが、そうでない場合もありました。

于 2010-11-01T11:03:42.227 に答える