喂 我有以下情况:一个WinService,它从队列中处理一些东西,写入其他表(在处理过程中),在它完成后删除该条目并移动到下一个。
我需要一种机制来确定实例是否处于活动状态以及是否启动或唤醒第二个实例。
到目前为止,我认为有两个实例正在进行,每个实例都尝试从队列中获取内容并处理它(尝试 - 如果它可以 - 就像没有设置keepAliveFlag或记录的lastUpdateDate一样很久以前)。可能存在处理相同记录的情况 - 这是不利的。
对于上面提出的解决方案,当实例尝试编写keepAliveFlag并且没有成功停止时,我还需要一种机制。
除了这个解决方案之外,还有实例的解决方案是不断地将内容写入db,第二个实例检查是否写入了新内容,如果没有唤醒或启动第二个实例。但是可能会出现几个问题:如果前大师醒来会发生什么?一般而言,第二种情况似乎难以正确实施。
现在的问题是:实现这个的正确模式是什么?
答案 0 :(得分:1)
服务是Windows系统中的单例。支持多个实例的唯一方法是安装多个具有不同服务名称的相同二进制文件。
您可以使用[ServiceController][1]
类监控任何指定服务的状态,使用Status property来确定当前状态并采取相应措施。
答案 1 :(得分:0)
我的团队目前做的是: