2
我有一个WritableBitmap更新在一个单独的线程,特别是响应一个事件。WritableBitmap不适用于单独的线程?
myWritableBitmap.Lock();
CopyMemory(myWritableBitmap.BackBuffer, ...);
myWritableBitmap.AddDirtyRect(...);
myWritableBitmap.Unlock();
当在单独的线程上运行,不被所述Lock()
命令抛出一个System.InvalidOperationException
。
如果我运行相同的代码是这样的:
this.Dispatcher.Invoke(new VoidDelegate(delegate
{
//Same code as above...
}));
没有异常抛出和代码运行完美。 Lock()的目的不是允许多线程访问吗?任何想法为什么发生这种情况?
锁应该不会做任何绘图。我会假设我可以将内存复制到后台缓冲区,然后将它绘制在UI线程上。 – 2009-05-05 19:48:09