我已经开始在我的WPF应用程序中引入一些并行编程以加速更密集的重复性任务。这很好,因为我看到执行时间和感知UI响应的显着差异。命令CanExecute处理程序与我的线程任务发生冲突
我明显很小心,以确保没有从我的UI线程和这些任务线程并发访问相关数据。
但是 - 有时(并非所有的时候),我的程序崩溃了,事实证明,命令的CanExecute处理程序试图访问正在并行任务中处理的相同数据。或者,相反,我的并行任务失败,因为数据已被CanExecute处理程序使用。
有没有推荐的方法来解决这个问题?我可以关闭CanExecute吗?我必须为每个CanExecute方法添加一个测试吗? (在一个侧面说明中,在看这个问题时,我对CanExecute处理程序被调用的频率感到非常惊讶!部分我认为,出于性能原因,值得手动启用和禁用这些命令,但肯定是WPF正试图让我们更容易的那种卑鄙的任务!)