2010-01-04 109 views
2

我们有用C#编写的Windows服务。它运行了大约5-6小时后会崩溃。 我们的C#Windows服务调用非托管代码,这是一个COM组件。C#中的Windows服务 - 崩溃/错误

从事件查看器中唯一的错误信息,我得到的是:

错误的应用程序application.exe,版本2.2.2.0,印花税45ed8d14, 错误模块comcomponent.dll,版本5.2.3790.3959,印花税45d70ad8,调试? 0,故障地址0x0000bee7。

是否有任何方法通过在不同的进程中运行未托管代码来保持Windows服务持续运行/运行?

截至目前我们已经尝试AppDomain作为不同的过程,但它未能克服这个问题。

请提出合适的解决方案。

+1

COM dll做什么?它写了什么语言?由于COM组件 – shahkalpesh 2010-01-04 13:16:55

+0

请提供一些其他解决方案服务吃了大量的内存 – venkat 2010-01-05 05:07:45

回答

1

即使你启动一个新的AppDomain,它仍然是一个进程。

既然您已经在使用COM,我认为.NET Enterprise Services将是您的最佳解决方案。在许多其他功能中,Enterprise Services可以将您的COM对象托管在不同的进程中。

+0

你能指导我如何处理企业服务,因为我是新来的使用..... NET企业服务 – venkat 2010-01-04 13:32:50

+0

它真的只有另一个用于COM +的单词,因此您可以使用标准的COM +工具来配置COM组件以进行进程外激活和托管。 – 2010-01-04 14:08:30

0

除了试图使您的代码尽可能健壮,您可能想看看Service Protector。无论出于何种原因它会在崩溃,挂起或停止时自动重启您的关键任务服务,并会向您发送电子邮件通知您发生了什么。利用免费的30天试用版来确保它有助于解决您的问题。

祝你好运!