我已经从部署为windows服务的单个exe创建了两个服务。每个服务对应一个dll(类库项目)。当我停止服务时,dll不会卸载,并且与此dll对应的代码将继续运行。我有一个定期运行的轮询器,即使服务关闭也会继续轮询。如何在服务停止时卸载相应的dll?
答案 0 :(得分:0)
卸载dll不是点网方式。您应该覆盖服务类的onStop()方法。设置一些标志,表示相应的dll不会回答民意调查。你可以杀死轮询线程,或者更好的是仍然使用信号量来阻止线程直到启动/恢复。
如果您显示一些代码,那么我们可以进一步提供帮助。猜测,
是否有一个触发投票过程的计时器?然后停止/处置该计时器。在服务的OnStart()中创建一个新的计时器。另一种方法是检查计时器回调中的标志。
是否有一个无限的while循环来进行轮询(一次又一次)?如果有一个,那么更好地重构代码以使用计时器。无论如何,你可以在循环体中插入一个标志,如果设置了标志就继续循环。