【问题标题】:what may cause a c# application to stop after 12 hours什么可能导致 C# 应用程序在 12 小时后停止
【发布时间】:2011-04-11 06:52:16
【问题描述】:

我正在开发一个 C# 实用程序,用于更新数据库中的数据表。我的应用程序在 12 小时后停止,显示一个指示 Windows 错误的消息框。
我确信没有内存泄漏。此外,它还停止了大约 12 小时的运行,指示超时过期消息。所以我将 Commandtimeout 属性设置为无穷大。现在这个错误不再显示了。

还有什么可能会在 12 小时后停止该实用程序?这个“Windows 错误”消息是什么意思?

我使用 AppDomain.CurrentDomain.UnhandledException 处理未处理的异常,长时间运行该实用程序后出现以下消息框。
消息框:“超时已过期。在操作完成之前超时时间已过或服务器没有响应”

知道我正在使用 SQLServer2008 R2 并且我已经将所有 commandTimeout 设置为 0。

怎么了?为什么我仍然收到此错误?!

【问题讨论】:

  • MessageBox 错误是什么?
  • “什么可能导致 C# 应用程序在 12 小时后停止”- 错误代码?内存泄漏?
  • 分享完整的错误消息并将EventHandlers 添加到事件AppDomain.CurrentDomain.UnhandledException 和Application.ThreadException 可能会为您提供进一步的线索,了解哪里出了问题。此外,您的数据库连接很可能会终止...当然,如果您将Timeout 设置为Infinite,则不会出现错误,因为他会等待很长时间。还要检查您的数据库设置。
  • @Strider007 如果出现请截图消息框
  • Exception.InnerException ad infinitum plus callstacks 可以很好地调试。

标签: c# .net


【解决方案1】:

为什么您希望您的实用程序继续工作,如果某些事情要定期进行,那么您应该使用调度程序来调用您的实用程序。这将确保您的应用程序不会将资源保持在锁定状态。
现在来到你的观点......如果应用程序必须运行超过 12 小时连续。然后检查,.. 是否有任何东西使所有连接强制中断为数据库安排的示例备份。即使超时设置为无穷大,这也会使所有连接中断。

【讨论】:

    【解决方案2】:

    您使用的是哪个数据库?我知道在 mysql 中,数据库对连接保持打开的时间有限制。也许在您的数据库中是 12 小时,但是如果这是 mySql,更改超时设置有点问题。所以记住要同时改变全局和本地设置,否则它不会改变,祝你好运。

    【讨论】:

      【解决方案3】:

      某些网络每 12 小时就会发生一次故障,导致 p2p 应用程序崩溃。也许每隔 X 小时就会触发一些与网络相关的问题。

      您的代码是否正确地在失败时重新连接并记录体面的错误消息,还是会崩溃?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 1970-01-01
        • 2016-02-29
        • 1970-01-01
        相关资源
        最近更新 更多