我正在使用 WPF 和DelegateCommand
PRISM 并遇到以下问题:
我开始一个异步操作,如:
public async void ProgramDevice()
{
var result = await FirmwareLoader.DownloadFirmwareAsync();
}
在此方法中,触发了一个事件,我注册到该事件并应更新我的事件DelegateCommand
,使其无法执行:
//UiCommand is of type DelegateCommand
Engine.IsProgrammedChanged +=
(s, e) => Dispatcher.Invoke(() => UiCommand.RaiseCanExecuteChanged());
现在我遇到了问题,RaiseCanExecuteChanged
导致死锁(我检查并Dispatcher.Invoke
没有导致它,因为当我例如显示一个 MessageBox 时它工作正常)。
我做错了什么或者我该如何解决这个问题?