gpt4 book ai didi

c# - 任务状态 WaitingForActivation

转载 作者:太空狗 更新时间:2023-10-30 00:07:30 24 4
gpt4 key购买 nike

我有以下功能:

async public Task<bool> checkNetwork (RestClient _client, ConnectivityManager conn)
{
var connected = false;
var activeConn = conn.ActiveNetworkInfo;
if (activeConn != null && activeConn.IsConnected) {
var request = new RestRequest ();
request.Timeout = 5000;
var response = await _client.ExecuteAwait (request);
//Task<IRestResponse> tmpResponse = _client.ExecuteAsync (request);
if (response.ErrorException != null)
connected = false;
else
connected = true;
}

return connected;
}

它一直挂起,因为当我调用它时状态永远不会离开 WaitingForActivation。有什么想法吗?

最佳答案

It keeps hanging because the status never leaves WaitingForActivation when I call it.

实际上,WaitingForActivation只是表示任务尚未完成。这不是挂起的原因,而是挂起的一个指标。 Promise 任务(包括 async 方法返回的任务)将保留在 WaitingForActivation 中陈述直到他们完成;我更详细地描述了任务状态机 on my blog .

死锁最可能的原因是调用 Task<T>.ResultTask.Wait进一步向上堆栈。我完整地描述了这个僵局 on my blog ,但它的要点是 await将捕获“当前上下文”并使用它来恢复其 async方法。如果从 UI 线程调用,那么该上下文就是 UI 线程,如果 UI 线程通过调用 Result 被阻塞/Wait , 然后是 async方法无法在该 UI 线程上恢复。

关于c# - 任务状态 WaitingForActivation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com