Wpf ui任务未按预期运行
在下面的代码中,我希望在获取之前的一些数据时显示一条状态消息,并且在数据获取完成之前不显示填充了该数据的对话框。但是,对话框在数据到达之前显示 我做错了什么 干杯,Wpf ui任务未按预期运行,wpf,multithreading,task,Wpf,Multithreading,Task,在下面的代码中,我希望在获取之前的一些数据时显示一条状态消息,并且在数据获取完成之前不显示填充了该数据的对话框。但是,对话框在数据到达之前显示 我做错了什么 干杯, 贝里尔 代码异步执行fetch,但继续显示完成对话框,而不等待异步调用完成 您应该在从fetch调用的回调中调用continuation,而不是在实际启动请求的同一个方法中调用continuation。我认为是这样的: ProjectSelectionViewModel vm = null; SetStatus("Fetching
贝里尔
代码异步执行fetch,但继续显示完成对话框,而不等待异步调用完成
您应该在从fetch调用的回调中调用continuation,而不是在实际启动请求的同一个方法中调用continuation。我认为是这样的:
ProjectSelectionViewModel vm = null;
SetStatus("Fetching data...");
var task = Task.Factory.StartNew(() =>
{
vm = presentationFactory.GetProjectSelectionViewModel();
}
);
task.ContinueWith(t =>
{
SetStatus("Finished!!!");
var userAction = uiService.ShowDialog(Strings.ViewKey_ProjectPicker, vm);
},
TaskScheduler.FromCurrentSynchronizationContext());
你的意思是在继续中(类似于task.ContinueWith(t=>\u onFetchFinished(vm),…)或在创建任务中(类似于task.Factory.StartNew(()=>\u fetch(),()=>\u onFetchFinished(vm))。你能划掉一些快速而肮脏的代码吗?
ProjectSelectionViewModel vm = null;
SetStatus("Fetching data...");
var task = Task.Factory.StartNew(() =>
{
vm = presentationFactory.GetProjectSelectionViewModel();
}
);
task.ContinueWith(t =>
{
SetStatus("Finished!!!");
var userAction = uiService.ShowDialog(Strings.ViewKey_ProjectPicker, vm);
},
TaskScheduler.FromCurrentSynchronizationContext());