我从部署为 Windows 服务的单个 exe 创建了两个服务。每个服务对应一个 dll(类库项目)。当我停止服务时,dll 不会卸载,并且与此 dll 对应的代码继续运行。我有一个定期运行的轮询器,即使服务关闭,它也会继续轮询。服务停止时如何卸载对应的dll?
问问题
38 次
1 回答
0
卸载 dll 不是 dot-net 的做事方式。您应该重写服务类的 onStop() 方法。设置一些标志,指示相应的 dll 避免回答民意调查。您可能会杀死轮询线程,或者最好仍然使用信号量来阻止线程直到启动/恢复。
如果您显示一些代码,那么我们可以提供进一步的帮助。猜测,
是否有触发轮询过程的计时器?然后停止/处置该计时器。在服务的 OnStart() 中创建一个新的计时器。另一种方法是检查计时器回调中的标志。
是否有一个无限循环来进行轮询(一次又一次)?如果有,那么更好地重构代码以使用计时器。无论如何,如果设置了标志,您可以在循环体中插入一个标志并继续循环。
于 2013-06-04T04:21:00.603 回答