【发布时间】:2009-05-05 19:34:31
【问题描述】:
我有一个 WritableBitmap,它在单独的线程上更新,特别是为了响应事件。
myWritableBitmap.Lock();
CopyMemory(myWritableBitmap.BackBuffer, ...);
myWritableBitmap.AddDirtyRect(...);
myWritableBitmap.Unlock();
当在单独的线程上按原样运行时,Lock() 命令会抛出 System.InvalidOperationException。
如果我像这样运行相同的代码:
this.Dispatcher.Invoke(new VoidDelegate(delegate
{
//Same code as above...
}));
不抛出异常,代码运行完美。 Lock() 的目的不是允许多线程访问吗?知道为什么会这样吗?
【问题讨论】:
标签: c# wpf multithreading