我只是想知道,是Graphics.DrawImage()
異步? 我正在努力解決線程安全問題,無法找出問題所在。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);
}
莫非是解釋一個accessviolation例外?
該代碼運行在Windows Mobile 6.1設備上,結構緊湊3.5。
編輯:
沒關係,它也發生在該方法在同一個線程得到執行..
這篇文章可能會揭示一些:http://stackoverflow.com/questions/2798812/net-controls-why-arent-all-calls-thread-safe/2798859#2798859 – 2010-06-14 08:21:42