私は 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 を表示すると正常に動作するため、確認しましたが、原因ではありません)。
何か間違ったことをしていますか、またはこの問題を回避するにはどうすればよいですか?