【发布时间】:2015-09-28 18:31:38
【问题描述】:
我的视图模型中有这样的异步方法
public async Task Download()
{
//Do some background thread to do heavywork and recursive task
await Download();
}
那我这样叫我的观点
private async Task LoadData()
{
_vm.Download();
//Do other background task
await _vm.DoElse();
}
然后这样称呼它
Task.Factory.StartNew(async()=> {await LoadData();});
现在我的问题是如何取消Download()?
【问题讨论】:
-
不应该是
await _vm.Download();吗?您的代码甚至可以正常工作吗?因为如果我没记错的话,_vb.DoElse会立即被调用。 -
取消令牌是您所需要的。示例可以在here 找到。是的,当前
_vm.Download();正在阻塞您的线程,因此您将无法取消。
标签: c# async-await