我有一个WritableBitmap,它在一个单独的线程上更新,特别是在响应一个事件时。
myWritableBitmap.Lock();
CopyMemory(myWritableBitmap.BackBuffer, ...);
myWritableBitmap.AddDirtyRect(...);
myWritableBitmap.Unlock();
当按原样在单独的线程上运行时,Lock()
命令会抛出System.InvalidOperationException
。
如果我运行相同的代码:
this.Dispatcher.Invoke(new VoidDelegate(delegate
{
//Same code as above...
}));
不会抛出任何异常,代码运行完美。 Lock()的目的不是允许多线程访问吗?知道为什么会这样吗?