gpt4 book ai didi

c# - F# 中的 ConfigureAwait(false)

转载 作者:行者123 更新时间:2023-12-02 11:19:27 26 4
gpt4 key购买 nike

我正在使用一个用 C# 编写并使用 async/await 模式的库。在 C# 中,我可以通过 ConfigureAwait(false) 调用它来等待某些东西。但是当我使用 F# 中的库时,我看不到做同样事情的方法吗?

目前我做SomeMethodAsync() |> Async.AwaitTask将其转换为 Async F# 工作流程,但我怎样才能做到与 ConfigureAwait(false) 相同的操作?调用 SomeMethodAsync 时也来自 F# ?

编辑:

在 F# Slack channel 和一些额外的谷歌搜索中得到了一些很棒的帮助,我在这里找到了关于如何切换上下文的一个很好的解释:http://tomasp.net/blog/async-non-blocking-gui.aspx/

最佳答案

就像在将其转换为 F# 任务之前调用 ConfigureAwait 一样简单。

SomeMethodAsync().ConfigureAwait(false) |>  Async.AwaitTask

但是,如果您主要处理 C# 异步任务。 TaskBuilder.fs 对我们来说更干净计算表达式。使用 dotnet add package TaskBuilder.fs 在 nuget 中可用.

您不必手动调用 ConfigureAwait(false)而只是
open FSharp.Control.Tasks.V2.ContextInsensitive

然后每次你 let!它将自动为 .ConfigureAwait(false)

关于c# - F# 中的 ConfigureAwait(false),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38129505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com