【发布时间】:2017-09-08 12:13:28
【问题描述】:
private async void TriggerWeekChanged(Week currentWeek)
{
await LoadDataForSelectedWeek(currentWeek); //Split into multiple methods
}
如果用户敲击Change_Week 按钮,我如何取消当前任务,并使用新参数启动新任务?
我试过这样:
private async Task Refresh(Week selectedWeek, CancellationToken token)
{
Collection.Clear();
await LoadDataFromDatabase();
token.ThrowIfCancellationRequested();
await ApplyDataToBindings();
token.ThrowIfCancellationRequested();
//Do some other stuff
}
问题是:
在我的Collection 中,当我连续点击快速按钮时,我获得了数周的数据。
【问题讨论】:
-
您应该粘贴 LoadDataForSelectedWeek 和取消代码整个方法。
-
我刚刚注意到您的
TriggerWeekChanged方法是async void。请查看我在答案末尾添加的注释。 -
@BradleyUffner 这是我在创建问题时犯的一个错误。在我的代码中,它的类型是
Task。感谢提及!
标签: c# wpf multithreading cancellationtokensource