TcpClient.ConnectAsync是一个任务,它不适用于 F# 异步工作流。
我想我在这里遗漏了一些非常简单的东西——有没有一种通用的方法来使用工作流中的 Async 或 Begin/End 函数?
TcpClient.ConnectAsync是一个任务,它不适用于 F# 异步工作流。
我想我在这里遗漏了一些非常简单的东西——有没有一种通用的方法来使用工作流中的 Async 或 Begin/End 函数?
看看Async.AwaitTask
和Async.FromBeginEnd
。
通常这会起作用:
async {
...
do! client.ConnectAsync(address, port) |> Async.AwaitTask
}
但是,由于该Async
模块只能直接使用Task<'T>
并ConnectAsync
返回Task
,因此在这种特殊情况下所需的代码会稍长一些:
do! client.ConnectAsync(address, port) |> Async.AwaitIAsyncResult |> Async.Ignore
或者
let! _ = client.ConnectAsync(address, port) |> Async.AwaitIAsyncResult