更新:定時器是一個System.Threading.Timer。精簡版框架:Timer.Dispose未被阻止
我們有一個在Timer Tick上更新的UI控件。在處理我們的控件時,我們調用timer.Dispose()。當定時器在調用UI控件後觸發時,偶爾會遇到ObjectDisposedOExceptions。
我看到這個在msdn docs:
「回調的Dispose()方法重載調用後可能會發生,因爲計時器隊列回調由線程池中的線程執行可以利用的Dispose(WaitHandle的)方法重載等到所有回調完成。「
但是,Compact Framework無法訪問該重載方法。
這種情況的最佳解決方法是什麼?有沒有辦法讓我們的Dispose方法阻塞,直到定時器完全丟棄?其他建議?
謝謝!
我們試着檢查控件是否處於回調狀態。這並沒有幫助 - 我們可以告訴控制權的最佳狀態是在我們實際處於回調方法內時處置的。 – Steve 2010-11-04 23:29:41