如何在 SubmitWorkitem()
方法之后执行 UpdateTasklist()
方法而不阻塞线程?
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 Web 服务并请求所有打开的工作项。在 SubmitWorkitem()
方法中提交的工作项仍然是回复的一部分。我认为这是因为 UpdateTasklist()
在工作项提交完成之前执行。
请注意,UpdateTasklist()
也是一个异步方法
最佳答案
重要提示:不要编写ASYNC VOID
方法(除非您正在编写事件处理程序)
其余的:
这已经在你的代码中发生了;这就是await
的意思;基本上,您的 DifferentClass.UpdateTasklist();
方法作为延续的一部分发生,当且仅第一个任务( >this.SubmitWorkitem(workitem)
) 完成。
根据您的编辑,有一个缺少的步骤:您应该等待
第二个方法,否则该方法无法报告完成/失败(IIRC,编译器也会提醒您):
private async Task SubmitWorkitem(Workitem workitem)
{
await Task.Run(() => this.SubmitWorkitem(workitem));
var locator = new ViewModelLocator();
await locator.Task.UpdateTasklist();
}
关于c# - 等待异步方法而不阻塞线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17165488/