我已經開始在我的WPF應用程序中引入一些並行編程以加速更密集的重複性任務。這很好,因爲我看到執行時間和感知UI響應的顯着差異。命令CanExecute處理程序與我的線程任務發生衝突
我明顯很小心,以確保沒有從我的UI線程和這些任務線程併發訪問相關數據。
但是 - 有時(並非所有的時候),我的程序崩潰了,事實證明,命令的CanExecute處理程序試圖訪問正在並行任務中處理的相同數據。或者,相反,我的並行任務失敗,因爲數據已被CanExecute處理程序使用。
有沒有推薦的方法來解決這個問題?我可以關閉CanExecute嗎?我必須爲每個CanExecute方法添加一個測試嗎? (在一個側面說明中,在看這個問題時,我對CanExecute處理程序被調用的頻率感到非常驚訝!部分我認爲,出於性能原因,值得手動啓用和禁用這些命令,但肯定是WPF正試圖讓我們更容易的那種卑鄙的任務!)