【问题标题】:How to access the T object of a Task<T> [duplicate]如何访问 Task<T> 的 T 对象 [重复]
【发布时间】:2017-08-12 02:13:17
【问题描述】:

我正在使用 Task.Wait() 方法同步使用异步方法,但是当调用完成后,我想访问由 Task 模板化的对象。

Task<HttpResponseMessage> message = _httpClient.GetAsync(Globals.ENDPOINT_URI + Uri.EscapeDataString(query));
message.Wait();

如何访问消息对象的 HttpResponseMessage ?

谢谢

【问题讨论】:

标签: c# .net asynchronous


【解决方案1】:

您需要使用async/await,因为使用WaitResult 被认为是一种不好的做法。您的代码将更新为以下内容:

HttpResponseMessage message =
    await _httpClient.GetAsync(Globals.ENDPOINT_URI + Uri.EscapeDataString(query));

await 将等待调用完成并提供结果,该结果将位于您的 message 变量中。

Internet 上有很多很好的资源,Stack Overflow 上有很多关于 async/await 的很好答案,在 C# 5 中引入。这里有一个页面可以帮助您入门:https://docs.microsoft.com/en-us/dotnet/csharp/async

编辑:这是关于Result 问题的一个很好的资源:@​​987654322@

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-23
    相关资源
    最近更新 更多