检查可能存在的对象的实例
本文关键字:对象 实例 存在 检查 | 更新日期: 2023-09-27 18:02:06
一些前言:我有一个windows服务,它每十秒触发一个计时器(尽管在app.config中可以配置)。当计时器触发一个事件时,事件处理程序创建一个对象的实例(我们称之为Executor),该对象执行一些工作。Executor对象创建后台线程来执行从DB获得的任务队列。大多数时候,Executor的线程会在大约60秒内完成,所以有合理的机会在任何时候,有六个或更多的Executor对象的实例,都在做一些工作(这是轻量级的工作,但是可以长时间运行,因为它获取和获取并等待一些东西-一段时间后,如果仍然没有完成,它会放弃)。
如果服务被要求停止,我不想留下这些后台线程,在某些情况下,我可能想让Executor对象在关闭之前完成。
是否有可能,在OnStop()方法中,获得Executor对象的实例集合,并检查每个实例的属性,然后从那里做出决定?
我目前的想法是,每次实例化Executor时,我都将其添加到集合中(并在完成后删除每个实例),然后在停止时咨询该集合。看起来很干净,但我想知道是否有一种更"流畅"的方式?
我知道我也可以不麻烦,只是用RequestAdditionalTime
来覆盖我认为最大的时间可以让它全部完成,但我不愿意假设将来不会有缓慢的问题或更大的任务。
集合是可行的方法。添加它们,并在服务结束时遍历它们,并让它们终止各自的任务。