[英]Why is Async.RunSynchronously hanging?
在我的f#項目中,我正在調用ac#library,它返回一個Task。 當我嘗試在我的f#項目中執行此操作時,沒有任何反應。
let str = getName() |> Async.AwaitTask |> Async.RunSynchronously
但是,如果我更新我的代碼以使用異步工作文件,它就不會再掛起了。 調用Async.RunSynchronously時我做錯了什么?
async {
let! str = getName() |> Async.AwaitTask
//Do something with str
}
在第二個示例中,您只需構建 async
工作流,但實際上並未 運行它。
它以這種方式設計,因此您可以定義一個復雜的工作流程,而無需立即運行它的每個異步部分,而是在它完好並准備就緒時運行整個事物。
要運行它,您需要調用Async.RunSynchronously
或Async.StartAsTask
:
async {
let! str = getName() |> Async.AwaitTask
//Do something with str
} |> Async.RunSynchronously
此外,如果您確實需要使用Task
,那么最好使用TaskBuilder.fs而不是Async
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.