Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
F# 检查异步计算的状态_F#_Computation Expression - Fatal编程技术网

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