我只是想知道,是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