我們正在利用我們的vb.net應用程序的一部分並行擴展檢索從dictonary的數據表(字符串,數據表)。在檢索表的方法中,我們使用Monitor.TryEnter。有時,我們收到錯誤「對象同步方法是從一個未同步的代碼塊調用的。」下面是我們的方法是什麼樣子:Monitor.TryEnter諮詢
Try
if Monitor.TryEnter(_ProductCollection, 200) = true then
_ProductCollection.TryGetValue(name, ReturnValue)
end if
Finally
Monitor.Exit(_ProductCollection)
End Try
我應該嘗試實現一個循環,以確保我們獲得鎖,試圖退出之前?我想這個錯誤正在拋出,因爲我試圖做monitor.exit,即使monitor.tryenter爲false。
字典支持從多個線程讀取的時間,所以也許你甚至不需要顯示器電話(如果你有可能在同一時間寫,那麼你確實需要它,你需要保護用相同的同步調用寫入)。 – zneak 2010-07-30 05:14:56
是的,我們正在同時閱讀和寫作。上面的代碼與寫入功能非常相似。 – 2010-07-30 06:20:24