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