我只是想知道,是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 的 windows mobile 6.1 设备上运行。
编辑:
没关系,当方法在同一个线程中执行时也会发生这种情况..