gpt4 book ai didi

c# - 在延迟之前长时间运行的异步方法会发生什么?

转载 作者:行者123 更新时间:2023-12-03 23:34:59 27 4
gpt4 key购买 nike

我有一个每秒向我的服务器发送请求的方法。

public async Task StartRequestProcess(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCanecllationRequested)
{
var result = await GetDataFromServerAsync();
await Task.Delay(1000, stoppingToken);
}
}

但我的 GetDataFromServerAsync() 方法有时需要 10 或 15 秒。

这段时间(10 或 15 秒)做什么?

进程会等到完成长请求吗?还是每秒都会发送新请求而无需等待?

最佳答案

I have a method that sends a request to my server every second.

不,你没有。请不要用虚假陈述提出问题;这让他们很难回答!

您的工作流程是:

  • 请求数据
  • 等待数据到达——这就是异步等待的意思。 await异步等待
  • 数据到达后,再次异步暂停一秒钟
  • 重复。

这不是“每秒发送一个请求”的工作流程。这就是“在最后一个请求成功后一秒发送请求”的工作流程。

What does in this time (10 or 15 seconds)?

异步等待。您说要异步等待数据可用,这就是它的作用。在异步等待期间,可以安排其他任务在线程上执行。

Will the workflow wait until the long request is completed?

是的。它将异步等待。同样,这就是 await 的意思。这意味着异步等待

Will new requests send every second without wait?

没有。您说要等到收到数据然后暂停一秒钟,所以会发生这种情况。

关于c# - 在延迟之前长时间运行的异步方法会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60875388/

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