我只是想知道,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设备上运行。
修改
没关系,当方法在同一个线程中执行时也会发生..
答案 0 :(得分:1)
答案 1 :(得分:0)
好吧,DrawImage不是异步的。该框架不会自动使其异步。此外,.NET中的大多数异步操作都以'Begin'开头,只是fyi。
我不确定你的错误来自哪里,但你可以: