簡體   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