我有一个要求,我需要在辅助线程(长时间运行的进程)中运行一个方法,当应用程序正常/异常关闭时,我需要存储辅助线程方法的信息处理的程度。
因此,当下一个应用程序启动时,我需要从停止的那一点开始辅助线程的方法。
问题:
答案 0 :(得分:2)
我想最好的方法是定期保存辅助线程的进度(到磁盘......),并在重新启动应用程序(和你的线程)时从上次保存的点恢复。
对我来说,其他任何方式看起来都像是木头,很难实现和调试。
答案 1 :(得分:1)
在辅助线程中,您可以在技术上与AppDomain.ProcessExit和AppDomain.UnhandledException事件相关联。
但值得注意的是,这两件事都是最后一次机会类型的事件,对他们有一些警告。在使用它们之前,必须仔细阅读每个事件的MSDN文档。
答案 2 :(得分:1)
听起来你的问题是使用BackgroundWorker
的候选人。它提供进度和取消通知。有关示例,请参阅BackgroundWorker文档。
当您启动或检测到应用程序将要关闭时,您可以在后台工作程序实例上调用CancelAsync
。在BackgroundWorker.DoWork
事件的处理程序内,您可以定期检查事件args以查看是否请求取消。