我用C#编写了一款由两部分组成的软件:一部分是Windows服务,它执行某些操作;另一部分是托盘应用程序,可以向服务发送命令,同时也能够接收来自服务的消息并通知用户。
为了实现这种通信,我在Windows服务中创建了一个WCF服务器(NamedPipes),然后托盘应用程序连接并“订阅”以接收消息。
为了使托盘应用程序接收服务的通知,它们之间的连接采用了
但是现在我明白了
问题是:如何正确 - 最佳地将消息从Windows服务发送到同一台PC上的客户端软件?A. 长时间运行(只要计算机正在运行)B. 以允许多个客户端的方式(因为托盘应用程序会多次启动,每个用户只启动一次)。
为了实现这种通信,我在Windows服务中创建了一个WCF服务器(NamedPipes),然后托盘应用程序连接并“订阅”以接收消息。
为了使托盘应用程序接收服务的通知,它们之间的连接采用了
DuplexChannel
。在DuplexChanel中,客户端调用服务器,服务器可以在客户端上执行方法。但是现在我明白了
DuplexChannel
并不适合这种长时间监听(即从客户端处):默认情况下,在一段时间内没有活动后,它会关闭,并且在我设置生产模式之后,它会在很长时间或者睡眠模式后关闭。我放弃了试图解决它所带来的问题(也许我错了)。问题是:如何正确 - 最佳地将消息从Windows服务发送到同一台PC上的客户端软件?A. 长时间运行(只要计算机正在运行)B. 以允许多个客户端的方式(因为托盘应用程序会多次启动,每个用户只启动一次)。