我正在迁移一个托管COM对象的旧的C++ Windows。我成功地创建了一个.Net Windows和一个COM可见服务组件,但只能在单独的项目中创建。
我需要的是我们的遗留应用程序能够通过COM接口创建我的新对象的实例;这些对象将托管在可以通过"Services“管理工具(启动、延迟启动、暂停、恢复、停止)管理的Windows Service流程中。它必须是Windows服务还有其他原因:
所有这些要点都由VisualWeb6.0中的旧"COM服务“结构很好地涵盖了,但是使用C++框架4,我不知道如何做到这一点。
也许我可以以某种方式合并.Net Windows和服务组件,或者有其他方法在我的Windows中公开类。
编辑:
我忘记提到我需要它成为标准Windows服务的一个重要原因:它必须能够执行一些相当长的任务时,它将被停止。客户端将委托COM对象在后台执行任务。如果服务过早停止,这些任务中的一些将被留待完成。只要服务能够执行一些清理过程(插入、更新等),就可以了。可能需要从零到十秒钟或更长的时间。它不需要防弹(它不会),但正常的系统关闭或维护服务停止不能留下未保存的东西。
发布于 2015-10-26 22:51:46
由于.NET服务组件是由COM+ (实际上是dllhost.exe)托管的库,因此必须实现IProcessInitializer才能启动进程和关闭事件。
要延长Service等待服务启动的时间,可以通过从IProcessControlInit转换对象来使用IProcessInitializer.Startup。
https://stackoverflow.com/questions/32908309
复制相似问题