2

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

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

问题:

  1. 我们怎样才能实现它?
  2. 如何暗示应用程序将要关闭的线程?
4

3 回答 3

2

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

在我看来,其他所有方式都像木头一样,很难实现和调试。

于 2012-07-03T03:41:25.230 回答
1

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

不过需要注意的是,这两个事件都是最后机会类型的事件,并且对它们有一些警告。在使用它们之前,需要彻底阅读每个事件的 MSDN 文档。

于 2012-07-03T03:22:37.633 回答
1

听起来您的问题是使用BackgroundWorker. 它提供进度和取消通知。有关示例,请参阅BackgroundWorker文档。

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

于 2012-07-03T03:46:10.487 回答