![](/img/trans.png)
[英]How to detect which thread is holding the application from shut down in .NET
[英]How to notify the running thread that application is going to shut down in .net?
我有一个要求,我需要在辅助线程中运行一个方法(长时间运行的进程),当应用程序正常/异常关闭时,我需要存储辅助线程的方法的信息处理量。
因此,当下一个应用程序启动时,我需要从停止位置开始启动辅助线程的方法。
问题:
我猜最好的方法是定期保存辅助线程的进度(到磁盘...),并在应用程序(和线程)重新启动时从上次保存的点恢复。
其他所有方式对我来说似乎都是woodoo,将很难实现和调试。
在辅助线程中,从技术上讲,您可以绑定到AppDomain.ProcessExit和AppDomain.UnhandledException事件。
提醒一下,这两个事件都是最后机会类型的事件,但有一些警告。 在使用之前,请务必仔细阅读有关每个事件的MSDN文档。
听起来您的问题是使用BackgroundWorker
的候选人。 它提供进度和取消通知。 请参阅BackgroundWorker文档以获取示例。
当您启动或检测到应用程序将要关闭时,可以在后台工作程序实例上调用CancelAsync
。 在BackgroundWorker.DoWork
事件的处理程序内,您可以定期检查事件args以查看是否请求取消。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.