F# 检查异步计算的状态
假设我想在执行一系列其他工作时经常检查长时间运行的异步操作的状态。是否可以检查F# 检查异步计算的状态,f#,computation-expression,F#,Computation Expression,假设我想在执行一系列其他工作时经常检查长时间运行的异步操作的状态。是否可以检查异步计算表达式是否已完成(就像任务的IsCompleted属性一样) 换句话说,除了通过其计算表达式生成器提供的方法之外,是否有一种与Async交互的方法,或者我应该使用Tasks吗?与Task不同,F#Async是参考透明的;直到您显式地启动它,它才开始执行,当它完成时,它就完成了。例如,如果您调用Async.RunSynchronously,您就知道它在返回之前是不会完成的。如果您改为使用Async.Start,您
异步
计算表达式是否已完成(就像任务
的IsCompleted
属性一样)
换句话说,除了通过其计算表达式生成器提供的方法之外,是否有一种与
Async
交互的方法,或者我应该使用Task
s吗?与Task
不同,F#Async
是参考透明的;直到您显式地启动它,它才开始执行,当它完成时,它就完成了。例如,如果您调用Async.RunSynchronously
,您就知道它在返回之前是不会完成的。如果您改为使用Async.Start
,您将需要某种同步标志,异步工作流完成后可以更新。我认为使用可变标志比使用Async.startask
和IsCompleted
:)更麻烦。感谢您的输入。要添加到Mark的良好回复中,可以多次启动给定的Async
值,这与任务不同。如果您来自C#,您可以看到Async