2012-01-14 61 views
0

我正在爲展覽安裝創建一個小亭子應用程序。我開發的.Net & C#和計算機將運行Windows 7.Windows .Net應用程序崩潰監視程序

現在,什麼是最簡單的方法來設置某種看門狗,將殺死進程並重新啓動它,以防止它掛起。或者如果引起一個exeption,將關閉錯誤窗口並重新啓動應用程序?

謝謝!

回答

0

最簡單的方法是編寫自助服務終端應用程序,使其不會崩潰或掛起。爲什麼花時間編寫一個看門狗,這可能會有其自身的問題,當你花時間製作你正在看的防彈應用程序?

+0

當然,我這樣做。我不設計系統,使得崩潰是其功能的一部分。但在現實世界中你永遠不知道 - 所以萬一它崩潰(爲什麼有理由)我想處理它。 – Mat 2012-01-14 21:02:07

+2

我和@Mat一起,你沒有系安全帶,因爲你要崩潰了,你戴了一個,因爲無論你多麼小心,你都不能*保證*它不會發生...... – Murph 2012-01-14 21:31:32

+1

讓我想起我產品組中的某個人說:「讓我們用f5鍵刷新ui窗口,以防與數據模型不同步。」我的迴應是:「爲什麼我們不修復導致它不同步的錯誤?」 – selbie 2012-01-15 02:22:31

0

我假設自助終端應用程序是作爲普通UI應用程序而不是服務啓動的。

如果是這種情況,我會編寫一個小的shell應用程序,它是實際啓動的應用程序,當它啓動時,它將啓動自助服務終端應用程序作爲一個單獨的進程,然後進入一個循環,每隔幾秒就對自助服務終端應用程序的健康狀況進行檢查,然後進入睡眠狀態(thread.idle,doevents,任何需要的)。

您可以通過保留對已啓動的進程的引用並檢查它是否已退出來檢查自助服務終端應用的運行狀況。

你也可以做一些簡單的事情,就像售貨亭定期通過後臺工作者線程更新一個小文件一樣。監控應用程序可以檢查這個文件的更新時間,如果它沒有在特定的時間段內更新,你可以認爲自助服務終端應用程序已經鎖定並殺死了這個進程,這個進程會在接下來通過監控應用程序的循環。