2011-06-30 6 views
5

私のアプリが動作していて、システムが休止状態から再開したとき(Windows 7の場合)に奇妙な問題があります。Winforms Drawing - パラメータがシステムの再開時に有効でない

私はGraphics.DrawStringメソッドを呼び出していますが、これはほとんどの場合時間がかかります。プログラムが実行されているときを除いて、私はシステムを休止します。その後、私が再開すると、DrawStringメソッドはArgumentExceptionをスローします(パラメータは有効ではありません)。

ここで何が問題になりますか?例外をキャッチすると赤い十字は避けられますが、この状態になると戻ってくることはなく、例外がプログラムが再開されるまでスローされ続けます。任意の助け

おかげで、 アラン

編集:

protected override void OnPaint(PaintEventArgs e) 
{ 
    // Drawing logic succeeds until this point 

    e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y)); 
} 

これは実際ToolStripLabelのサブクラスである:ここで失敗しているコードがあります。

+2

コードを追加できますか?描画していたウィンドウがまだ存在することを確認します。それは無効なhWndのように聞こえる。 –

+0

グラフィックスオブジェクトを構築した場合、無効になっている可能性があります。 –

+0

コメントのおかげで、私はコードサンプルを追加しました。私が言及しておかなければならない何かは、親フォームがWindowsFormHostコンテナ内のWinFormsコンポーネントを持つWPFです。 –

答えて

2

多くのシステムリソースは、スリープまたは休止状態後に無効になります。だからあなたのフォントはおそらくそのような問題の一般的な原因として無効です。また、SolidBrush上でDisposeを呼び出してリソースリークを防止する必要がないことにも注意してください。このように...

using(SolidBrush drawBrush = new SolidBrush(ForeColor)) 
    e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y)); 
+0

あなたの助けをありがとうPhil。ブラシを処分しないのが犯人のようだった。私は冬眠のカップルを試して、問題は再び起こっていない。 –

関連する問題