[英]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.