【发布时间】:2013-06-18 09:39:53
【问题描述】:
如何在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 网络服务并请求所有打开的工作项。在SubmitWorkitem() 方法中提交的工作项仍然是回复的一部分。我认为那是因为UpdateTasklist() 是在工作项提交完成之前执行的。
注意UpdateTasklist()也是一个异步方法
【问题讨论】:
-
要么定义回调,要么将
UpdateTaskList放入异步任务中 -
将我的答案重新编辑为您的编辑
-
哦,刚刚注意到这是
async void;是的……不要那样做;这简直是危险的。该功能仅存在以允许事件处理程序;你永远不应该写一个async void方法。它应该是async Task或async Task<SomeType> -
我想我今天学到了一些东西,谢谢你
标签: c# wpf asynchronous .net-4.5 async-await