2010-11-28 139 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 ;) 
}