.net WindowsService.exe遇到问题,需要关闭。给您带来不便,我们深表歉意

.net WindowsService.exe遇到问题,需要关闭。给您带来不便,我们深表歉意,.net,windows-services,windows-xp,.net,Windows Services,Windows Xp,我的服务有时会失败。还不错,在Windows7和WindowsServer2003上,服务会重新启动。但在windows XP上,我看到消息“WindowsService.exe遇到问题,需要关闭。对于给您带来的不便,我们深表歉意。”我已将我的服务添加到将从错误报告中排除的应用程序列表中。它没有帮助-消息显示没有“发送报告”和“不发送”。 主要的问题在于我的服务中没有未处理的EXECTION。一个dll中有错误(具有非托管cod),我无法更正它。 我如何设置我的服务,使之成为没有按摩的工作? 补

我的服务有时会失败。还不错,在Windows7和WindowsServer2003上,服务会重新启动。但在windows XP上,我看到消息“WindowsService.exe遇到问题,需要关闭。对于给您带来的不便,我们深表歉意。”我已将我的服务添加到将从错误报告中排除的应用程序列表中。它没有帮助-消息显示没有“发送报告”和“不发送”。 主要的问题在于我的服务中没有未处理的EXECTION。一个dll中有错误(具有非托管cod),我无法更正它。 我如何设置我的服务,使之成为没有按摩的工作? 补充:
我所有的代码都在一个try/catch块中。事件日志为“Faulting application WindowsService.exe,版本1.0.0.0,Faulting module.dll,故障地址0x00010616”。

您可以将有问题的代码包装到
try
/
catch
块中,并记录异常情况。

尝试将有问题的代码包装到try/catch块中,从这里,您可以使用异常数据并将其写入日志,该日志可用于错误报告或调试

我假设你在C#中发展:

根据经验法则:

  • windows服务中的所有直接方法必须包装在try-catch块中
  • 所有服务的OnStart必须至少启动一个计时器/循环器/轮询工作者

    • 试图捕获此异常是一个坏主意,访问违规是一个相当严重的问题。在Main()方法中订阅AppDomain.CurrentDomain.UnhandledException事件。在事件处理程序调用环境中。退出(1)。这不能保证运行,非托管代码可能已经启动了自己的线程。您需要的大蒜十字架是SetUnhandledExceptionFilter(),您应该用C++/CLI编写它。

      谢谢。但我的服务中没有未经处理的例外。一个dll中有错误(具有非托管cod),我无法更正。好的,我在哪里可以阅读OnStart方法中的详细限制?我在OnStart方法中运行了一个线程。但是我在msdn上找不到关于它的信息。我希望你的程序有一个比“WindowsService.exe”更好的名称,并且这只是你为SO选择的一个示例名称。耶!我找到了!kernel32.dll中的SetLastError函数隐藏错误消息!