我开始关注Jon Skeet's presentation on C# Async CTP。在指定超时时,他结结巴巴。
来自F#的相当有限的曝光,有一种直观,集中且简单的方法来指定超时。所以,我想知道当前的事态是什么:C#Async CTP可以完成F#async块运行器所做的所有事情吗?是否有文件概述了差异和限制?
其他细节: 在F#中,异步块运行器提供了一种指定以下内容的方法:
这是在F#中做这些事情的方法: Order of arguments and pipe-right operator
答案 0 :(得分:3)
我甚至不记得提到超时 - 但我会接受你的话:)
组合任务以实现超时相当容易:创建第二个任务,即“延迟”,然后等待该任务或原始任务完成。无论哪一个首先到达那里,如果可行,取消另一个(使用取消令牌)。新创建的任务将以主操作的结果(如果成功)完成,或者如果“延迟”首先完成则完成。
我不会看到 AsyncCtpLibrary.dll中直接支持的内容,但您可以通过提供 的工具轻松地构建它。您可能需要查看“Task-Based Asynchronous Pattern Overview”和“TPL Dataflow”文档,看看它们是否也涵盖了它。