我正在尝试在不冻结 GUI 线程的情况下执行一些耗时的操作。该UpdateSomething
方法在两个地方调用,一次在我的 ViewModel 的构造函数中,一次在按钮单击 (RelayCommand) 上。如果通过 RelayCommand 调用该方法,则该方法在 WorkerThread 中执行,但当方法调用来自构造函数时,该方法在 MainThread (GUI) 中运行。
是什么导致了这种奇怪的行为?我通过 IntelliTrace 仔细检查了几次。
这是有问题的方法:
private async void UpdateSomething()
{
var item = await Task.Factory.StartNew(() =>this.DoSomething("I should run async"));
this.TestItem = item;
}
我正在使用 WPF 和 .Net 4.5