ReactiveUI 同步 ReactiveCommand 调用原因 System.InvalidOperationException
ReactiveUI sync ReactiveCommand invocation cause System.InvalidOperationException
我尝试将简单的同步命令与 Reactive 绑定UI。
public ICommand ClickCommand { get; set; }
public bool IsClicked;
public MainViewModel()
{
ClickCommand = ReactiveCommand.Create(OnClick);
}
private void OnClick()
{
//just example of fast action
IsClicked = true;
}
但是当我调用它时出现错误:
System.InvalidOperationException: 调用线程不能访问这个对象,因为这个对象的所有者是另一个线程
在调用堆栈中我可以看到它是关于 System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute() 的。
我怎样才能避免 ReactiveCommand.CanExecute 的变化或强制它在 UI 线程中调用?
我希望有更好的错误信息。尝试将 ReactiveUI.WPF 包添加到您的项目中。它包含许多注册到 ReactiveUI 的依赖倒置系统的 WPF 相关线程包。您还可以在 getting started documentation 的第 2 步中找到此信息。编码愉快!
几周来我一直遇到同样的问题。当菜单项试图更新其状态(ReactiveCommand 绑定到菜单项)时抛出我的异常。
将 ReactiveUI.WPF
添加到项目中解决了问题。
我尝试将简单的同步命令与 Reactive 绑定UI。
public ICommand ClickCommand { get; set; }
public bool IsClicked;
public MainViewModel()
{
ClickCommand = ReactiveCommand.Create(OnClick);
}
private void OnClick()
{
//just example of fast action
IsClicked = true;
}
但是当我调用它时出现错误:
System.InvalidOperationException: 调用线程不能访问这个对象,因为这个对象的所有者是另一个线程
在调用堆栈中我可以看到它是关于 System.Windows.Controls.Primitives.ButtonBase.UpdateCanExecute() 的。 我怎样才能避免 ReactiveCommand.CanExecute 的变化或强制它在 UI 线程中调用?
我希望有更好的错误信息。尝试将 ReactiveUI.WPF 包添加到您的项目中。它包含许多注册到 ReactiveUI 的依赖倒置系统的 WPF 相关线程包。您还可以在 getting started documentation 的第 2 步中找到此信息。编码愉快!
几周来我一直遇到同样的问题。当菜单项试图更新其状态(ReactiveCommand 绑定到菜单项)时抛出我的异常。
将 ReactiveUI.WPF
添加到项目中解决了问题。