在UWP的RaiseCanExecuteChanged上的COMException

时间:2017-02-20 18:09:30

标签: c# xaml uwp

我有一个RelayCommand,绑定到AppBarButton,如下:

Command="{Binding NextCommand, UpdateSourceTrigger=PropertyChanged}"

命令的CanExecute属性只是一个简单的空检查。

private bool CanExecuteNextCommand() => !(this.SelectedItem == null);

但是,如果RaiseCanExecuteChanged被快速多次调用(通过Trigger),那么这里:

CanExecuteChanged?.Invoke(this, EventArgs.Empty); 

我得到以下异常:

"错误HRESULT E_FAIL已从调用COM组件返回。"

如果从视图中删除Command属性绑定,则可以正常工作。

我甚至尝试在触发器上升级CanExecuteChangeds之前添加一个Task.Delay(200),但是我得到了相同的异常。

有没有人在UWP中遇到过类似的事情?

1 个答案:

答案 0 :(得分:0)

根据这个: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/cfa7416c-435f-4f4b-9ad0-2b290b4ee978/w81-windows-81-app-working-properly-in-windows-81-throws-comexception-0x80004005-when-it-is?forum=wpdevelop

我有相同的情况,即将调用CanExecuteChanged的命令与屏幕上的当前视图不在同一视图上。

作为解决方案:我只是把CanExecuteChanged?.Invoke(this,EventArgs.Empty);尝试使用COMException的空catch块:

catch(System.Runtime.InteropServices.COMException ex) { }