使用三次应用程序的窗口服务中的控制线程

本文关键字:服务 窗口 控制 线程 控制线 应用程序 三次 | 更新日期: 2023-09-27 18:29:38

我编写了一个窗口服务,它使用线程执行一些任务。现在我正在编写一个使用窗口服务控制器控制窗口服务的应用程序。还有一些线程,我想从这个第三方应用程序控制。我试图使用数据库启动/停止线程,但这似乎不是一个合适的解决方案。我认为一定有一些东西可以支持第三个应用程序中的控制线程,比如窗口服务控制器。如有任何帮助,我们将不胜感激。感谢

使用三次应用程序的窗口服务中的控制线程

您可以覆盖服务中的OnCustomCommand,以允许通过ExecuteCommand与服务控制器进行通信。

您只能发送128到256之间的数字,但如果您将其封装在枚举中,则应该非常可行。如果你需要发送更多的数据,你仍然可以在发送命令后通过数据库获取这些数据。

  • http://msdn.microsoft.com/en-us/library/system.serviceprocess.servicebase.oncustomcommand.aspx

对我来说效果很好的是在我的服务中有一个主管线程,它轮询数据库表中的命令,然后控制工作线程。主管还将状态写回数据库中的另一个表。

UI控制器应用程序轮询状态表并将命令写入命令表。当服务对命令做出响应时,它会将结果回显到状态表,从而向用户提供积极的反馈。

我还使用第三个表作为工作线程写入的活动队列,并由控制器显示,这样用户就可以看到发生了什么。限制活动表可以增长的大小,这样控制器就不必总是在运行。

用事务保护表,这可能会在无人值守的情况下长时间运行。