我编写了一个使用该线程执行某项任务的窗口服务。现在我正在编写一个使用窗口服务控制器控制窗口服务的应用程序。还有一些我想从这个第三方应用程序控制的线程。我尝试使用数据库启动/停止线程,但它似乎不是一个正确的解决方案。我认为必须有一些东西可以支持控制线程,如第三个应用程序的窗口服务控制器。 任何帮助将不胜感激。 感谢
答案 0 :(得分:1)
您可以在服务中覆盖OnCustomCommand,以允许服务控制器通过ExecuteCommand进行通信。
你只能发送128到256之间的数字,但如果你把它包装在枚举中它应该是非常可行的。如果您需要发送更多数据,您仍然可以在发送命令后通过数据库获取数据。
答案 1 :(得分:0)
对我来说有用的是在我的服务中有一个主管线程,它会轮询数据库表中的命令,然后控制工作线程。主管还将状态写回数据库中的另一个表。
UI控制器应用程序轮询状态表并将命令写入命令表。当服务响应命令时,它会将结果回显到状态表,为用户提供正面反馈。
我还使用第三个表作为工作线程写入的活动队列,并由控制器显示,以便用户可以看到发生了什么。限制活动表的增长程度,以便控制器不必始终运行。
使用事务保护表,这可以在无人看管的情况下运行很长时间。