任务取消代币?鉴于取消令牌,我想创建一个等待它的任务,该任务永远不会完成但可以取消。我需要这种模式,IMO它应该是常见的:asyncTaskDoStuff(Taskt,CancellationTokenct){//t是由TaskCompletionSource生成的,//t和ct都超出了我的控制范围Taskt2=TaskFromCancellationToken(ct);等待任务.WhenAny(t,t2);//做事}目前我最好的想法是:TaskTaskFromCancelationToken(CancellationTokenct){有没有更好的方法来实现这个逻辑?它不是很常见,但足以成为我的AsyncEx库的一部分。我使用这样的东西:publicstaticTaskAsTask(thisCancellationTokencancellationToken){vartcs=newTaskCompletionSource();cancellationToken.Register(()=>tcs.TrySetCanceled(),useSynchronizationContext:false);返回tcs.Task;您在问题中建议的.Delay(Timeout.Infinite,cancellationToken)答案是我所知道的最佳解决方案。原因如下:据我所知,Task.Delay方法被很多人大量使用,并且在Microsoft博客上也有推荐。MSDN示例。为什么要编写自己的代码(包括测试)来利用TaskCompletionSource将取消令牌转换为任务?与其重新发明轮子,不如利用标准库;它们比您的代码更不容易出错。以上就是C#学习教程:取消token的任务?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
