private CancellationTokenSource cts; private async voID OnStartClick(object sender,RoutedEventArgs e) { try { cts = new CancellationTokenSource(); cts.CancelAfter(5000); await Task.Delay(10000,cts.Token); } catch (TaskCanceledException taskCanceledException) { ??? How do i kNow who canceled the task here ??? } } private voID OnCancelClick(object sender,RoutedEventArgs e) { cts.Cancel(); cts.dispose(); }解决方法 无论是否单击了取消按钮,都存储在字段中:
bool hasUserCancelled = false;
并在开始之前重置此字段:
hasUserCancelled = false; cts = new CancellationTokenSource(); cts.CancelAfter(5000);
在取消按钮单击处理程序中设置它:
private voID OnCancelClick(object sender,RoutedEventArgs e){ hasUserCancelled = true; cts.Cancel(); cts.dispose();}
您想要的信息现在可以在catch中找到:
catch (TaskCanceledException taskCanceledException) { DeBUG.Writeline(new { hasUserCancelled }); }总结
以上是内存溢出为你收集整理的c# – 如何知道超时或手动触发器是否取消了任务?全部内容,希望文章能够帮你解决c# – 如何知道超时或手动触发器是否取消了任务?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)