簡體   English   中英

為什么Async.Run異步掛起?

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

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