2010-11-28 138 views
0

我想聲明在後端Windows服務代碼中使用_ASSERTE。但據我所知,默認行爲將掛起該服務,因爲消息框。Windows服務中的聲明

在Windows服務中安全地進行斷言的最佳方式是什麼?

編輯: 我應該提到,如果在控制檯模式下運行,代碼仍應該使用正常行爲;例如在進行單元測試時。

+0

您要做什麼斷言?這實際上是一個針對具體問題的解決方案,因爲有些服務會在斷言方面失敗,有些應該只記錄一個錯誤,有些應該向NASA發送電子郵件並提醒他們即將發生空間入侵。 – 2010-11-28 06:37:20

+0

我猜電子郵件美國宇航局不符合斷言;)。因爲如您所知,它在測試應用程序的調試版本時使用。我想獲得斷言的基本好處;當某些ASSERT失敗時,會收到通知(顯而易見,很難忽略)。因爲不會有消息框允許忽略消息,或者破壞..等等。我想可能是一個配置文件中的一個選項,會指定如何處理失敗的斷言;停止服務,或不。但最重要的是,正如我所說,我想知道一旦出現問題就會出現問題。 – haggag 2010-11-28 06:46:09

回答

1

只需編寫自己的斷言函數。

void assert(bool condition) 
{ 
    //Stop service and log failure to event log here ;) 
}