我有一个Windows服务,当用户启动他们的工作站时它始终在运行。这个Windows服务很重要,当某些事情发生时,比如服务停止、启动、重新启动等,我想在通知区域显示气球通知。
例如:
此外,是否有一种方法可以为我的Windows服务显示一个通知区域图标?
例如:
![enter image description here](https://istack.dev59.com/ryZHG.webp)
Windows服务直接与桌面交互的时代已经结束,因此您需要找到另一种方法。
我所做的是创建一个普通的WinForms应用程序,其中包括一个NotifyIcon。该应用程序的行为类似于任务管理器,可以隐藏在任务栏中,只能在系统托盘中显示。如果我右键单击系统托盘图标,会出现菜单。如果我双击该图标,则会显示应用程序窗口。
为了促进WinForms应用程序与Windows服务之间的通信,我使用WCF。具体来说,我使用Juval Lowy 的发布-订阅框架,这对于这种情况非常有效。有关更多详细信息,请参见我的回答这里。
希望这可以帮助您。
如果您只想向Windows服务发送一个简单的命令,您可以通过以下方式从用户应用程序向其发送消息。
ServiceController myService = new ServiceController("YOUR Service Name");
myService.ExecuteCommand(123); // do something;