如何取消正在运行的任务?我想取消正在运行的任务(当用户按下转义键时)。当我按下“退出”键时,Form_KeyDown会运行但不会取消任务!CancellationTokenSourcetokenSource=newCancellationTokenSource();CancellationTokentoken=newCancellationToken();privateasyncvoidSearch_Button_ClickAsync(objectsender,EventArgse){token=tokenSource.Token;await(Task.Factory.=>Start//()..myprogram},token));privatevoidForm_KeyDown(objectsender,KeyEventArgse){if(e.KeyCode==Keys.Escape){tokenSource.Cancel();除了您需要在运行的方法之外阻止您的代码,您做的很好。通过将取消令牌传递给Task.Factory.StartNew,您不会中止任务。让我引用StephenToub的话:将令牌传递给StartNew会将令牌与任务相关联。这有两个主要好处:1)如果令牌在任务开始执行之前请求取消,任务将不会执行。它不会转换为正在运行,而是立即转换为已取消。如果在运行时简单地取消任务,这可以避免运行任务的成本。2)如果任务的主体也在监视取消令牌并抛出包含该令牌的OperationCanceledException(这是ThrowIfCancellationRequested所做的),那么当任务看到OCE时,它会检查OCE的令牌是否与匹配的任务令牌相同.如果是,则异常被认为是协作取消的确认,并且任务转换为已取消状态(而不是故障状态)。需要手动检查你的token是否被取消,抛出操作取消异常,如下:以上是C#学习教程:如何取消正在运行的任务?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注—await(Task.Factory.StartNew(()=>{for(inti=0;i本文采集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除,转载请注明出处:
