Мне просто интересно, а 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);
}
Может ли это объяснить исключение нарушения прав доступа?
Код работает на устройстве Windows Mobile 6.1 с компактной платформой 3.5.
Edit:
Неважно, это происходит также, когда методы выполняются в одном потоке ..