等待System.Threading.Task并忽略结果?

时间:2013-07-08 09:08:33

标签: f# async-await dotnet-httpclient

我试图通过直接潜入并尝试将一些C#代码转换为它来学习F#。我正在重写的一件事是异步方法的一部分,它等待调用HttpClient的GetAsync而不使用结果。那就是:

await httpClient.GetAsync("http://www.example.com");

以下是我尝试过的唯一没有得到红色波浪形的东西。虽然我认为它是有效的,但它确实创建了一个我可能想要避免的变量。

let! ignoreme = Async.AwaitTask <| httpClient.GetAsync("http://www.example.com")

应该怎么做?

1 个答案:

答案 0 :(得分:5)

do!运算符与Async.Ignore结合使用:

do! Async.AwaitTask(httpClient.GetAsync("http://www.example.com")) |> Async.Ignore

这与编写let! ignoreme = ...然后忽略ignoreme绑定相同。

但是我认为最好坚持使用F#数据类型 - 尽可能避免使用Async.AwaitTask并直接使用Async<'T>类型。我认为FSharp.Data library会有很好的帮助。