2008-12-10 162 views
2

您是否使用過Vista的應用程序恢復API?應用程序恢復

http://msdn.microsoft.com/en-us/library/aa373347(VS.85).aspx

你覺得他們是可靠的,易於使用?

我正在閱讀一些文檔,看來自己滾動可能是更好的方式,因爲我可以使我的解決方案與XP兼容。有沒有人試圖寫自己的?本地方法可以提供哪些不能輕易地用手來複制的東西?寫這種類型的解決方案有哪些潛在的方法,我覺得我可能需要運行後臺服務來監視我的應用程序的健康狀況,這是唯一的方法嗎?

回答

2

如果描述爲什麼需要監視它,這將會很有幫助。

它是否在沒有GUI的情況下無人值守運行?然後,您可以創建一個Windows服務。 XP中已有重新啓動服務選項。

它是一個GUI應用程序,即使用戶不在時也提供一些後臺服務嗎?考慮將它分成一個Windows服務(需要一直運行)和一個GUI應用程序,它可以在不影響服務操作的情況下崩潰。

或者你正在編寫一個不能依賴用戶重啓它的「信息亭」應用嗎?

您可以編寫一個小的「包裝器」應用程序,只需啓動您的真實應用程序並等待它退出。當它退出時,檢查例如退出代碼來決定它是否定期崩潰或退出。

要監視應用程序掛起,讓您的真實應用程序定期(使用定時器)「封裝」包裝。如果包裝器在一段時間內沒有收到ping,它可以終止並重新啓動實際應用程序。

由於包裝很小,它崩潰的風險也很低。但是,如果這對你來說是個問題,真正的應用程序可能會反向監視包裝。

0

唯一的方法是讓服務監控應用程序。

原因是,如果應用程序有真正致命的錯誤,應用程序本身無法處理,那麼它之外的某些東西必須執行恢復操作。

後臺服務可以使用WMI(適用於XP,Vista等)來監視應用程序。當它啓動時,它使用多少內存,何時關閉,等等。