gpt4 book ai didi

.net - 线程未从 Thread.Sleep() 唤醒

转载 作者:行者123 更新时间:2023-12-04 17:29:33 31 4
gpt4 key购买 nike

我们有一个用 C# 编写的 Windows 服务。该服务会生成一个执行此操作的线程:

private void ThreadWorkerFunction()
{
while(false == _stop) // stop flag set by other thread
{
try
{
openConnection();

doStuff();

closeConnection();
}
catch (Exception ex)
{
log.Error("Something went wrong.", ex);

Thread.Sleep(TimeSpan.FromMinutes(10));
}
}
}

在数据库消失了几次之后,我们将 Thread.Sleep 放入,然后我们又回到了充满数据库连接错误的 3Gb 日志文件。

这几个月来一直运行良好,但最近我们看到了一些实例,其中 log.Error() 语句记录了“System.InvalidOperationException: This SqlTransaction has completed; it is no longer use”异常,然后再也没有回来.该服务可以运行数天,但不会再记录任何内容。

做了一些阅读后,我知道 Thread.Sleep 并不理想,但为什么它永远不会回来?

最佳答案

深入了解一下?在那个 SCSS 身上贴上调试器!

我至少可以看到以下可能性:

  • 日志系统挂起;
  • 线程退出得很好,但服务仍在运行,因为其他部分有逻辑错误。

  • 也许,但几乎可以肯定不是,以下内容:
  • Sleep() 挂起。

  • 但无论如何,附加调试器将显示线程是否仍然存在以及它是否真的挂了。

    关于.net - 线程未从 Thread.Sleep() 唤醒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29841/

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