私はちょうど疑問に思っていました、Graphics.DrawImage()
非同期ですか?スレッドセーフの問題に苦しんでいて、問題がどこにあるのかわかりません。
GUIスレッドで次のコードを使用する場合:
protected override void OnPaint(PaintEventArgs e)
{
lock (_bitmapSyncRoot)
{
e.Graphics.DrawImage(_bitmap, _xPos, _yPos);
}
}
そして、別のスレッドに次のコードを入れます。
private void RedrawBitmapThread()
{
Bitmap newBitmap = new Bitmap(_width, _height);
// Draw bitmap //
Bitmap oldBitmap = null;
lock (_bitmapSyncRoot)
{
oldBitmap = _bitmap;
_bitmap = newBitmap;
}
if (oldBitmap != null)
{
oldBitmap.Dispose();
}
Invoke(Invalidate);
}
それはアクセス違反の例外を説明できますか?
コードは、コンパクトフレームワーク3.5を搭載したWindowsMobile6.1デバイスで実行されています。
編集:
気にしないでください、それはメソッドが同じスレッドで実行されるときにも起こります。