2010-11-28 5 views
0

Я хотел бы утверждать, используя _ASSERTE в бэкэнд-код службы Windows. Но, как я понимаю, поведение по умолчанию приведет к зависанию службы из-за окна сообщения.Утверждения в службах Windows

Каков наилучший способ безопасно делать утверждения в службе Windows?

Редактировать: Я должен был упомянуть, что код должен по-прежнему использовать обычное поведение, если он работает в режиме консоли; например, при тестировании устройства.

+0

Что бы вы хотели сказать об утверждении? Это действительно решение, зависящее от конкретной проблемы, так как некоторые службы должны терпеть неудачу в отношении утверждений, а некоторые должны просто регистрировать ошибку, а некоторые должны отправлять по электронной почте NASA и предупреждать их о неизбежном вторжении в космос. – 2010-11-28 06:37:20

+0

Я полагаю, что по электронной почте НАСА не подходит для утверждений;). Потому что, как вы знаете, он используется во время тестирования отладочной версии приложения. Я хотел бы получить основную выгоду от утверждения; получать уведомление (с чем-то очевидным, это трудно игнорировать), когда какой-то ASSERT терпит неудачу. Потому что не будет окна сообщений, позволяющего игнорировать сообщение, или break..etc. Я думаю, может быть, вариант в файле конфигурации или так будет указывать, как действовать с неудачными утверждениями; остановите службу или нет. Но самое главное, как я уже сказал, я хотел бы знать, что что-то пошло не так, как только это произойдет. – haggag 2010-11-28 06:46:09

ответ

1

Просто напишите свою собственную функцию assert.

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