>管理异步任务:实现超时
>有效的异步编程需要管理任务完成。 但是,有时候,我们需要在此等待过程中施加时间限制。本文详细介绍了一种在尊重超时约束时异步等待aTask<T>
的方法。
解决方案:组合Task.WhenAny()
和Task.Delay()
>
Task.WhenAny()
该解决方案的核心在于Task.Delay()
>和Task.WhenAny(task1, task2)
>等待两个任务完成的第一个。 我们通过创建代表我们的超时期来利用这一点。Task.Delay()
同时监视目标任务和超时任务。 如果目标任务在超时之前完成,则Task.WhenAny()
返回目标任务。 否则,它返回Task.WhenAny()
任务,指示超时。Task.Delay()
>
扩展解决方案:合并取消> 为了增强控制,请考虑添加取消支持。 将取消令牌传递给目标任务和
。这可以立即从任何一个来源取消。 仔细处理取消和任务完成对于防止比赛条件至关重要。以上是如何异步等待超时的任务?的详细内容。更多信息请关注PHP中文网其他相关文章!