取消任务如果等待时间到了,我有一个任务需要取消。例如vart=Task.Factory.StartNew(()=>{Thread.Sleep(5000)//一些长时间运行的任务“做某事”});Task.WaitAll(new[]{t},1000);但似乎使命仍在继续。我尝试使用CancellationTokenSource,但这似乎也不起作用。我使用以下代码段确认了这一点staticvoidMain(string[]args){varcancellationTokenSource=newCancellationTokenSource();vart=Task.Factory.StartNew(()=>{Thread.Sleep(5000);Console.WriteLine("仍在工作");},cancellationTokenSource.Token);Task.WaitAll(new[]{t},1000);cancellationTokenSource.Cancel();控制台.ReadLine();}控制台显示“仍在工作”。我以为任务会被取消。我相信我错过了一些东西。我错过了什么?谢谢。取消令牌不会神奇地取消任何东西。它们只允许您以标准化方式检查取消,例如通过ThrowIfCancellationRequested。所以通常你需要完成一些需要大量工作才能完成的任务。它定期调用ThrowIfCancellationRequested,然后任何需要取消该任务的代码都会在需要时调用CancellationTokenSource上的Cancel。下次勾选取消时,任务就会抛出,一切都会好起来的。听起来您正在寻找一个非合作的Cancel-由于正常的Thread.Abort是危险的,这将是危险的。让任务选择它允许自己被取消的点会更干净。以上就是《C#学习教程:取消任务分享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
