我正在尝试从异步方法设置ViewModel List属性,但这会以以下错误结束:
{"应用程序调用了为不同线程编组的接口。 (来自HRESULT的异常:0x8001010E(RPC_E_WRONG_THREAD))"}
错误很清楚。我不清楚的是克服此问题并成功设置属性的最佳方法,该属性又会更新UI。
以下尝试以对象引用未设置为对象的实例错误结束,在初始化Dispatcher时出现错误:
private async Task DoSomething()
{
DispatcherHelper.Initialize();
DispatcherHelper.CheckBeginInvokeOnUI(
() =>
{
ViewModelProperty = SomeResult;
});
}
解决这个问题的最佳方法是什么?
更新:
我最终在App.xaml.cs OnLaunched方法中全局初始化DispatcherHelper。
答案 0 :(得分:2)
看起来你在后台线程中调用了DispatcherHelper.Initialize()
。在这里它无权访问Dispatcher对象。
您需要在UI线程上初始化它,如documentation:
中所述初始化。应该在UI线程上调用此方法一次,以确保初始化UIDispatcher属性。