【问题标题】:How to extend application hang timeout?如何延长应用程序挂起超时?
【发布时间】:2018-05-11 08:58:00
【问题描述】:

我有一个处理用户输入数据的旧版应用程序。该应用程序在一台机器上崩溃而没有警告,所有其他用户都不会出现该问题。我要求用户向我发送他的事件查看器的屏幕截图,因为 AppDomain UnhandledException 事件没有产生任何弹出消息。我得到的错误是:

程序 停止与 Windows 交互并已关闭。要查看有关问题的更多信息,请查看安全和维护控制面板中的问题历史记录。

事件 ID 是 1002,我读到我应该将最耗时的操作移到后台线程,但应用程序太大,无法在不到一周的时间内对其进行重构。

有没有办法让这个应用程序的 UI 挂起很长时间?我的意思是超过 5 分钟

【问题讨论】:

  • 你的处理函数应该是异步的以避免这个问题。在主线程中处理大量数据时,只要函数正在运行,它就会冻结并且不会响应窗口。
  • 是的,这是一个长期的解决方案,但目前我有一个用 .net 2.0 编写的大型应用程序,所以我无法快速提供帮助。有什么我可以快速做的事情吗,比如更改 Windows 配置?
  • 检查我的答案:-)
  • 如果您从一开始就决定不以正确的方式进行操作,那么您只需要面对您行为的后果并花时间更新您的代码。对此没有好的解决方法或“快速修复”。

标签: .net windows vb.net winforms


【解决方案1】:

Tweaks.com 上检查this post

操作系统有一个程序必须运行的固定时间 在超时之前冻结。通常这个数字设置得太高。 但在某些情况下,它设置得太低。取决于如果 程序在计算机后台进行大量计算 可能会认为是超时了。为了防止这种情况增加 注册表中的超时。

  1. 启动注册。如果您不熟悉 regedit,请参阅我们的常见问题解答以了解如何开始。
  2. 导航到 HKEY_CURRENT_USER\Control Panel\Desktop
  3. 从右侧列表中选择 HungAppTimeout。
  4. 在它上面选择修改。
  5. 将该值更改为新的超时值。
  6. 重新启动计算机。

编辑 1:

很遗憾,这可能不适用于 Windows 10,因为这是针对 Windows XP 发布的。


编辑 2:

根据this post 上的tenforums.com,这可能仍然有效。

当应用程序(任务)没有自动结束(关闭)时 重新启动、关闭或退出 Windows 10、系统 在结束任务之前默认等待 5 秒(HungAppTimeout) 出现对话框,要求您取消或关闭列出的应用程序和 无论如何都要重新启动、无论如何都要关闭或退出。

如果您在 1 分钟前未在“结束任务”对话框中做出选择 超时到期,Windows 10会自动取消重启, 默认关闭或退出。

例如,如果您在打开记事本时未保存的更改 重新启动、关闭或退出。

HungAppTimeout 还指定了多长时间(默认为 5 秒) 系统在用户点击/点击后等待用户进程结束 任务管理器中的结束任务按钮。如果超过这个阈值, 出现“结束任务”对话框,说明该进程没有 回应。

本教程将向您展示如何指定 HungAppTimeout 值 系统在“结束任务”对话框出现之前等待多长时间 您的帐户或 Windows 10 中的所有用户。


你应该试试。您很可能会找到 ̶s̶̶o̶̶l̶u̶t̶i̶o̶̶n̶ 解决方法。

请记住,这不是一个长期的解决方案。您需要将该代码移动到后台线程中。

注意:我不建议以编程方式更改这些值。避免在代码中实施变通方法。

正如 VisualVincent 指出的(谢谢!),您还应该记住在发布修复程序后立即将这些值更改回其原始值。

【讨论】:

  • 我不会称之为解决方案,而是一个非常肮脏的解决方法。在用户的计算机上更改它肯定不好,因为它会影响所有应用程序!如果 OP 在开始时没有通过使用多线程来做正确的事情,那么他必须面对后果并花必要的时间来修复它。
  • @VisualVincent 如果您在一家小型编程公司工作,您就会知道,有时您确实需要那些快速的解决方法。如果您正在开发不断增长的应用程序,您也会知道,完全重写代码是需要时间的。如果需要您的应用程序但未在客户计算机上运行,​​您确实希望有一个快速的解决方法,直到您能够修复其背后的源。只要最后把代码修好就没有问题。
  • @VisualVincent 在接受职业培训后,我作为公司唯一的开发人员开始了我的职业生涯。我为客户编写的第一个应用程序现在有超过 50.000 行代码,并且包含大量“初学者错误”。这个应用程序现在被大约 300 名员工使用并且是他们的基础——没有它他们就无法工作。我很想解决所有问题,但是当您在服务公司工作时,您根本无法解决。只要应用程序正常工作,客户就不会愿意为后端的更改付费——这意味着只要没有合同,您就无权这样做。
  • +1 表示您的编辑(之前忘记检查了)。我觉得它使答案更加完整,因为它既回答了问题,又指出了有关临时解决方案的注意事项。 ——我也想为我之前的暴躁行为道歉。我对你非常粗鲁和傲慢。我实际上不确定我为什么会有这种感觉,但我绝对不应该把它告诉你。所以对此我深表歉意。你只是想帮忙,我为此表扬你!
  • @VisualVincent 没关系。最后你帮助我改进了答案 - 因为你的观点没有错!我们都帮助了 Matt1990 ,这就是我们来这里的目的,不是吗? - 聊天:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 2010-11-16
  • 2022-01-01
相关资源
最近更新 更多