我们有一个用C#编写的Windows服务。它运行了大约5-6个小时后崩溃了。 我们的C#Windows服务调用Un-Managed代码,它是一个COM组件。
我从事件查看器获得的唯一错误信息是:
错误应用程序application.exe,版本2.2.2.0,邮票45ed8d14, 错误模块comcomponent.dll,版本5.2.3790.3959,邮票45d70ad8,调试? 0,故障地址0x0000bee7。
有没有办法通过在不同的进程中运行未托管代码来使Windows服务保持活动/连续运行?
截至目前,我们已尝试将AppDomain
作为不同的流程,但未能解决此问题。
请提出合适的解决方案。
答案 0 :(得分:1)
即使您启动了新的AppDomain,它仍然是相同的过程。
由于您已经在使用COM,我认为.NET Enterprise Services将是您的最佳解决方案。在许多其他功能中,Enterprise Services可以在不同的进程中托管您的COM对象。
答案 1 :(得分:0)
除了尝试使代码尽可能健壮之外,您还可以查看Service Protector。当它因任何原因崩溃,挂起或停止时,它会自动重启您的关键任务服务,并会向您发送电子邮件,让您知道发生了什么。利用免费的30天试用期,确保它有助于解决您的问题。
祝你好运!