当我在断点处暂停时间过长时,C# HttpClient 调用 get TaskCanceledException

问题描述 投票:0回答:1

我正在 VS2022 上工作,我的代码出于日志记录目的创建了许多 HttpRequest。您可以在屏幕截图中看到它们都是异步调用。 我会在断点处暂停,直到几分钟后才返回。当我恢复时,我得到了这个异常。但为什么?请求已提出。它应该只是在以太中做它的事情,而不关心我的断点。

除非我错过了调试时暂停如何工作的一些内容。 有人可以解释一下为什么我会遇到这些例外吗?

c# timeout visual-studio-2022 dotnet-httpclient
1个回答
0
投票

首先,无限超时确实需要谨慎使用,因为它可能会导致程序在遇到网络问题时无限等待,导致程序无响应。

调试器暂停时它们会暂停吗?

当调试器暂停时,所有线程都停止执行。这是因为调试器锁定进程,以便您可以检查变量、调用堆栈等。

为什么这些请求会超时?

因为当您在调试器中暂停时,所有代码执行都会停止,包括异步操作。这会导致调试器暂停时发出的任何异步网络请求都将暂停(数据由操作系统保存在缓冲区中),直到您继续执行代码。然后唤醒线程池线程来处理计时器,将请求标记为失败,并唤醒线程/任务来捕获错误。这就是为什么会有超时。

© www.soinside.com 2019 - 2024. All rights reserved.