dus*_*ris 7 c# f# asynchronous async-workflow async-await
我正在使用一个用C#编写的库,并使用async / await模式。在C#中,我可以用调用它来等待某些东西,ConfigureAwait(false)
但是当我从F#使用库时,我看不到做相同事情的方法吗?
目前,我确实SomeMethodAsync() |> Async.AwaitTask
将其转换为Async
F#工作流程,但是ConfigureAwait(false)
调用时我该如何与F#一样SomeMethodAsync
呢?
编辑:
在F#Slack频道中提供了一些出色的帮助,并进行了一些附加的搜索,我在这里找到了关于如何切换上下文的很好的解释:http : //tomasp.net/blog/async-non-blocking-gui.aspx/
就像在将其转换为 F# 任务之前调用ConfigureAwait 一样简单。
SomeMethodAsync().ConfigureAwait(false) |> Async.AwaitTask
Run Code Online (Sandbox Code Playgroud)
但是,如果您主要处理 C# 异步任务。TaskBuilder.fs计算表达式对我们来说更清晰。可在 nuget 中使用dotnet add package TaskBuilder.fs
.
您不必手动调用,ConfigureAwait(false)
只需
open FSharp.Control.Tasks.V2.ContextInsensitive
Run Code Online (Sandbox Code Playgroud)
然后每次你let!
都会自动.ConfigureAwait(false)