WriteableBitmap在单独的Thread上不起作用?

时间:2009-05-05 19:34:32

标签: c# wpf multithreading

我有一个WritableBitmap,它在一个单独的线程上更新,特别是在响应一个事件时。

myWritableBitmap.Lock();
CopyMemory(myWritableBitmap.BackBuffer, ...);
myWritableBitmap.AddDirtyRect(...);
myWritableBitmap.Unlock();

当按原样在单独的线程上运行时,Lock()命令会抛出System.InvalidOperationException

如果我运行相同的代码:

this.Dispatcher.Invoke(new VoidDelegate(delegate
{
  //Same code as above...
}));

不会抛出任何异常,代码运行完美。 Lock()的目的不是允许多线程访问吗?知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

许多WPF绘图函数必须在STAThread中运行。第二段代码使您的绘图函数在主UI线程中运行。

编辑:更多关于WPF中的线程的更多信息here