繁体   English   中英

如何通知正在运行的线程该应用程序将在.net中关闭?

[英]How to notify the running thread that application is going to shut down in .net?

我有一个要求,我需要在辅助线程中运行一个方法(长时间运行的进程),当应用程序正常/异常关闭时,我需要存储辅助线程的方法的信息处理量。

因此,当下一个应用程序启动时,我需要从停止位置开始启动辅助线程的方法。

问题:

  1. 我们如何实现呢?
  2. 如何暗示应用程序将要关闭的线程?

我猜最好的方法是定期保存辅助线程的进度(到磁盘...),并在应用程序(和线程)重新启动时从上次保存的点恢复。

其他所有方式对我来说似乎都是woodoo,将很难实现和调试。

在辅助线程中,从技术上讲,您可以绑定到AppDomain.ProcessExitAppDomain.UnhandledException事件。

提醒一下,这两个事件都是最后机会类型的事件,但有一些警告。 在使用之前,请务必仔细阅读有关每个事件的MSDN文档。

听起来您的问题是使用BackgroundWorker的候选人。 它提供进度和取消通知。 请参阅BackgroundWorker文档以获取示例。

当您启动或检测到应用程序将要关闭时,可以在后台工作程序实例上调用CancelAsync BackgroundWorker.DoWork事件的处理程序内,您可以定期检查事件args以查看是否请求取消。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM