2010-07-05 47 views
0

有什麼好的方法來處理C#中的強制退出?處理強制退出

我有一個無形的C#應用​​程序,通過串口與液晶顯示器進行通話。一旦應用程序運行,殺死它的唯一方法就是使用任務管理器。這樣做的麻煩在於程序在完成時需要關閉LCD,並且看起來好像我的Application.ApplicationExit事件在此情況下曾經被觸發過。

任何想法?

回答

4

一旦應用程序運行,殺死它的唯一方法是使用任務管理器。

我的大想法是改變這一點。

在通知區域粘貼一個圖標,用戶可以使用該圖標正確關閉應用,或者將其設置爲再次運行應用,而不是關閉正在運行的實例(如果存在的話)或任何其他方式這聽起來像一個好主意。

要求用戶使用任務管理器關閉應用程序尖叫設計不佳。

+0

該應用程序並不打算永久關閉,它僅供我個人使用。我使用任務管理器的原因是因爲當Windows以相同的方式關閉時,程序被強制關閉。 – chris12892 2010-07-05 00:30:25

+0

然後你可以嘗試關閉關閉信號(使用'SystemEvents.SessionEnding')。 – 2010-07-05 00:48:17

+0

啊,好吧,那就是我一直在尋找的!謝謝! – chris12892 2010-07-05 01:45:38

0

在您的程序循環中編寫代碼(可能帶有計時器)以讀取文件或註冊表項。例如,如果C:\ YOURPROGRAM \ CLOSEME中的文件包含文本「closeme」,請優雅地關閉程序。編寫另一個寫入C:\ YOURPROGRAM \ CLOSEME文件的程序。所以,只要你想關閉你的程序,不要使用taskmanager,而應該打開第二個程序。

0

一些選項:

  • 編寫與可以啓動和停止的主要處理的GUI一個單獨的進程。例如,當您在Windows上安裝Apache Web服務器時,服務器本身作爲服務安裝。它可以從系統服務管理面板啓動和停止,但它還附帶一個位於通知區域的「監視器」進程,告訴您Apache是​​否正在運行,並允許您手動啓動或停止它。
  • 如果您的用例可以接受,請將該應用程序作爲控制檯應用程序。您可以註冊一個處理程序,以便在用戶按下CTRL + C(請參閱Console.CancelKeyPress)時執行清理操作,然後退出該進程。這仍然不會讓你處理任何人從任務管理器中殺死進程,但它很容易做到,根據你的情況可能會足夠好。
+0

兩者都不會工作,因爲... 1:當Windows關閉時,進程仍將被強制退出 2.它不適用於控制檯應用程序。 – chris12892 2010-07-05 00:36:09