如何在UpdateTasklist()
方法之后执行SubmitWorkitem()
方法而不阻塞线程?
private async void SubmitWorkitem(Workitem workitem)
{
await Task.Run(() => this.SubmitWorkitem(workitem));
//UpdateTasklist() should be executed after SubmitWorkitem() method.
//How can i achieve this without blocking the UI thread?
var locator = new ViewModelLocator();
locator.Task.UpdateTasklist();
}
修改
UpdateTasklist()
方法连接到wcf webservice并要求所有打开的工作项。在SubmitWorkitem()
方法中提交的工作项仍然是答复的一部分。我认为那是因为UpdateTasklist()
在提交工作项目之前执行。
请注意,UpdateTasklist()
也是异步方法
答案 0 :(得分:5)
重要提示:不要写ASYNC VOID
方法(除非您正在编写事件处理程序)
其余的:
这已经是您的代码中发生的事情;这就是await
的含义;基本上,您的DifferentClass.UpdateTasklist();
方法是作为延续的一部分发生的,该延续在时被调用,并且只有当第一个任务(this.SubmitWorkitem(workitem)
)完成时才会被调用。
通过编辑, 缺少一步:你应该await
第二种方法,否则方法无法报告完成/失败(IIRC编译器也会唠叨你):< / p>
private async Task SubmitWorkitem(Workitem workitem)
{
await Task.Run(() => this.SubmitWorkitem(workitem));
var locator = new ViewModelLocator();
await locator.Task.UpdateTasklist();
}