簡體   English   中英

F#中的ConfigureAwait(false)

[英]ConfigureAwait(false) in F#

我正在使用一個用 C# 編寫的庫並使用 async/await 模式。 在 C# 中,我可以通過使用ConfigureAwait(false)調用它來等待某些東西,但是當我使用 F# 中的庫時,我沒有看到做同樣事情的方法?

目前,我執行SomeMethodAsync() |> Async.AwaitTask以將其轉換為Async F# 工作流,但是在調用SomeMethodAsync時,如何從 F# 執行與ConfigureAwait(false)相同的SomeMethodAsync


編輯:

通過 F# Slack 頻道中的一些很棒的幫助和一些額外的谷歌搜索,我找到了一個關於如何在此處切換上下文的很好的解釋: 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM