问题场景描述
web api:需要向另一个服务器发送http请求,等待服务器的回调结果,若指定时间内比如10分钟没有收到回调则返回失败,否则处理回调返回。
典型的基于时间/回调的异步模式,和经常使用的await 模式不同,await是基于任务的异步模式,任务完成返回。而前面这种应用场景依赖回调处理结果或时间,不是简单地等待一段时间,等待的时间还要根据回调进行后续操作。
C#实现基于时间/回调的异步模式
1.TaskCompletionSource<T>
它允许你手动控制一个 Task<T>
的完成状态。这在你需要将基于回调的异步模式转换为基于任务的异步模式时特别有用。这样,你就可以使用 async/await 语法,而不是处理更复杂的回调或事件模式。
2.事件/委托
标签:异步,基于,await,模式,时间,回调 From: https://www.cnblogs.com/mbaymax/p/18103543