Я начал вводить параллельное программирование в свое приложение WPF, чтобы ускорить выполнение более интенсивных и повторяющихся задач.Все идет хорошо, потому что я вижу заметные различия во времени выполнения и воспринимаемом отклике пользовательского интерфейса.
Я, очевидно, был осторожен, чтобы не допустить одновременного доступа к соответствующим данным из моего потока пользовательского интерфейса и этим заданиемпотоки.
НО - иногда (не все время) моя программа падает, и оказывается, что обработчик команды CanExecute пытается получить доступ к тем же данным, которые обрабатываются в параллельной задаче.Или, наоборот, моя параллельная задача не выполняется, поскольку данные уже используются обработчиком CanExecute.
Есть ли рекомендуемый способ решения этой проблемы?Могу ли я отключить проверку CanExecute?Должен ли я добавить тест к каждому методу CanExecute?
(Кстати, глядя на эту проблему, я очень удивлен тем, как часто вызываются обработчики CanExecute!Из соображений производительности стоит включить и отключить команды вручную, но, безусловно, это та самая простая задача, которую WPF пытается упростить для нас!)