在下面的代码中,我希望在获取某些数据之前显示状态消息,并且在数据提取完成之前不显示填充了该数据的对话框。但是在数据到达之前会显示对话框。
我做错了什么?
干杯,
Berryl
ProjectSelectionViewModel vm = null;
SetStatus("Fetching data...");
var task = Task.Factory.StartNew(() =>
{
vm = presentationFactory.GetProjectSelectionViewModel();
}
);
task.ContinueWith(t => SetStatus("Finished!!!"), TaskScheduler.FromCurrentSynchronizationContext());
var userAction = uiService.ShowDialog(Strings.ViewKey_ProjectPicker, vm);
// etc.
答案 0 :(得分:1)
我想是这样的事情:
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());
答案 1 :(得分:0)
您的代码以异步方式执行提取,但继续显示完成对话框,而不等待异步调用完成。
您应该从fetch中调用回调中的continuation,而不是实际启动请求的方法。