加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 即使发生未处理的异常,保持应用程序运行

发布时间:2020-12-15 17:48:43 所属栏目:百科 来源:网络整理
导读:什么 ? 我正在开发一个需要持续运行的控制台应用程序,无需任何事情什么方法可以阻止多线程应用程序被某些未处理的异常发生在“某个线程某处”中? 为什么 请不要提供“你应该管理所有的例外”,“这不应该发生”等课程.我有我的理由:我们正在测试部署,我们
什么 ?
我正在开发一个需要持续运行的控制台应用程序,无需任何事情什么方法可以阻止多线程应用程序被某些未处理的异常发生在“某个线程某处”中?

为什么
请不要提供“你应该管理所有的例外”,“这不应该发生”等课程.我有我的理由:我们正在测试部署,我们需要保持这个运行,日志异常,并重新启动所有线程.如果任何计划外事件发生并导致未处理的异常被抛出,则需要检测它,并且调用一些方法重新启动所有线程(由于层设计,原子性是不可能的)

这就是说,我知道如果由于和我的UnhandledException(我已经实现)已经被吹,可能无法从“内”重新启动应用程序.

到目前为止,我已经使用Quartz.net的FileScan作业和一个标志文件来检测类似的东西,并从外面重新启动应用程序.但这对我来说听起来很糟糕.我想找到一些更清洁,更快,更脏的东西.

DownVoting / Sniping警告:我知道这可能是“按原样”.请创造性/乐于助人,而不是突然评论,并将其视为“开放式问题”

解决方法

您需要在当前AppDomain上附加事件处理程序到UnhandledException事件:

AppDomain.CurrentDomain.UnhandledException = UnhandledExceptionHandler

在处理程序中,您将必须以某种方式保存足够的状态(对文件,数据库等)重新启动的应用程序传递到新的线程.然后通过调用System.Diagnostics.Process.Start(“MyConsoleApp.exe”)来实例化您的控制台应用程序的新实例.

非常小心引入逻辑,以避免连续的崩溃/重启/崩溃/重新启动循环.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读