3

TcpClient.ConnectAsync是一个任务,它不适用于 F# 异步工作流。

我想我在这里遗漏了一些非常简单的东西——有没有一种通用的方法来使用工作流中的 Async 或 Begin/End 函数?

4

1 回答 1

6

看看Async.AwaitTaskAsync.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
于 2012-11-12T22:17:32.503 回答