gpt4 book ai didi

c# - 异步和等待需要澄清

转载 作者:行者123 更新时间:2023-11-30 13:46:59 25 4
gpt4 key购买 nike

我阅读了很多关于 async 和 await 的文章(大部分来自 msdn - 这实际上很好)。还有一个问题困扰着我,我找不到答案。

如果任务上有 await 语句,那么控制权将返回给它的调用者,直到调用者再次等待它。在那种情况下,这个耗时的任务是否在单独的线程中执行?如果不是,那么它如何与主线程并行执行。

async Task<string> GetContentsAsync()
{
int sample = 0;
HttpClient client = new HttpClient();
    Task<string> contents = client.GetStringAsync("http://www.microsoft.com");
            
    string data = await contents;
    return data;
}

我希望我的问题很清楚。

最佳答案

In that case is this time consuming task getting executed in a separate thread?

有两种任务。一些 Task 有要执行的代码,它们在某个线程上运行。其他Task执行代码;它们只是代表一些 future 事件。

“事件任务”很多async 使用,特别是在 I/O 场景中。在您的示例中,您正在执行 HTTP GET。 GetStringAsync 将发送 HTTP 请求,然后返回一个“事件任务”,该任务在收到响应时完成。当 HTTP 请求在传输中并由服务器处理时,没有代码 供客户端为该请求执行。所以不需要线程,也没有使用任何线程。

另见我的回答 here .

关于c# - 异步和等待需要澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19095018/

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