如何确定我的Windows服务已完成从远程应用程序处理我的请求?

时间:2012-10-23 21:30:14

标签: c# windows-services

我有一个监听消息队列的Windows服务,并处理来自此消息队列的请求。我有一个初始应用程序,将消息放入消息队列中。服务本身实际上会动态创建一些文件,当创建这些文件时,我需要初始应用程序来获取这些文件,并在屏幕上绘制它们。 (文件是html格式)暂时我在本地计算机上运行应用程序和服务,因此文件只位于我机器的c:驱动器上。

我的问题是我需要一些方法来通知我的初始应用程序该服务已成功并且未成功处理我的消息。我一直在研究如何做到这一点并空手而归。我也一直在集思广益,想知道如何才能使这项工作成功。一种不可行的解决方案是在将msg发送到队列时将记录插入到数据库表中,并且在服务更新期间处理完成后的队列记录,同时让应用程序查询表检查处理完成的状态。我完全不喜欢这个想法,因为我觉得它太强烈了,我相信必须有更好的方法来做到这一点。我将继续研究如何做到这一点,但我绝对希望有人有一个更好的解决方案,而不是我的SQL查询一次又一次地运行。请注意,过去我曾尝试向事件查看器查询进程,并且我知道如何执行此操作,但这对于我想要完成的时间要花费太长时间。

1 个答案:

答案 0 :(得分:0)

我最终选择了在调用Windows服务之前将记录插入数据库的路径。然后,当Windows服务完成其进程时,它更新了此db记录。我的页面一直通过javascript调用web服务,它检查数据库以查看记录上的标志是否已设置为已完成处理。这允许我确定Windows服务何时完成从队列中处理我的消息。