【发布时间】:2020-05-01 06:52:43
【问题描述】:
我是 .NET 新手,正在编写一个测试程序。现在我正在使用 TaskAwaiter,当我从它的实例中获取 awaiter 时,它总是在 awaiter.IsCompleted 上返回 false,我不知道为什么以及如何要解决这个问题?是不是我用错了?
TaskAwaiter<HttpResponseMessage> awaiter;
str = "login.action";
awaiter = client.client.GetAsync(str).GetAwaiter();
if (awaiter.IsCompleted)
{
break;
}
【问题讨论】:
-
您为什么希望它立即完成? (如果 GetAsync 实际上是同步的,它就会完成,但仅此而已。)异步操作的全部意义在于您启动某些东西,然后可以等待它完成。如果它总是立即完成,它就不是真正的异步。
-
@JonSkeet 但是我们什么时候才能知道它已经完成了?
-
通过注册完成处理程序。但是无论如何,您应该很少直接与等待者打交道——您通常只是等待任务。
标签: c# .net async-await client httpclient