为什么 awaiter.IsCompleted 总是 return 错误?

why does awaiter.IsCompleted always return false?

我是 .NET 的新手,正在为 test.Right 编写程序,现在我正在使用 TaskAwaiter,当我从它的实例中获取 awaiter 时,它在 [=16= 上总是 returns false ] 而且我不知道为什么以及如何解决它?我用错了吗?

TaskAwaiter<HttpResponseMessage> awaiter;
str = "login.action";
awaiter = client.client.GetAsync(str).GetAwaiter();
if (awaiter.IsCompleted)
{
  break;
}

Am I using it wrong?

您假设 HTTP 请求立即发生。不是这种情况。还得等着呢

在某些边缘情况下,被调用的异步方法可能不是异步的 - 即返回缓存结果 - 只有在这些情况下,您才会在调用后立即获得 IsCompleted = true。

您似乎没有正确的循环定义。 它应该是这样的:

TaskAwaiter<HttpResponseMessage> awaiter;
str = "login.action";
awaiter = client.client.GetAsync(str).GetAwaiter();
while (true)
{
  if (awaiter.IsCompleted)
  {
    break;
  }
}

或者这样写会更好: while (!awaiter.IsComleted) {}

或者最好的做法是使用 async/await 关键字。例如:

public async Task YourMethodName()
{
  ...
  str = "login.action";
  HttpResponseMessage response = await client.client.GetAsync(str);
  ...
}