我已经开始在我的 WPF 应用程序中引入一些并行编程来加速更密集、重复的任务。进展顺利,因为我看到执行时间和感知的 UI 响应存在明显差异。
我显然已经小心地确保没有从我的 UI 线程和这些任务线程对相关数据的并发访问。
但是 - 有时(不是一直),我的程序崩溃了,结果是命令的 CanExecute 处理程序正在尝试访问正在并行任务中处理的相同数据。或者,相反,我的并行任务失败,因为数据已被 CanExecute 处理程序使用。
有没有推荐的方法来解决这个问题?我可以关闭 CanExecute 检查吗?我必须为每个 CanExecute 方法添加测试吗?
(附带说明,在查看这个问题时,我对 CanExecute 处理程序被调用的频率感到非常惊讶!我的一部分认为,出于性能原因,值得手动启用和禁用命令,但肯定是这样WPF 试图让我们更轻松的一些琐碎任务!)