F#异步工作流中的TcpClient.ConnectAsync或BeginConnect / EndConnect

时间:2012-11-12 22:15:34

标签: asynchronous f#

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

我认为我在这里缺少一些非常简单的东西 - 是否有一种通用方法可以使用工作流中的Async或Begin / End函数?

1 个答案:

答案 0 :(得分: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
相关问题