C# 向用户显示 windows 服务更新通知

C# Show windows service updates notification to user

我是 .NET 的新手,正在寻求有关 Windows 服务更新通知的帮助。

我有一个有点类似于“

该应用程序是用 C#.NET 开发的,并作为 Windows 服务进行部署和 运行。 但是,应用程序没有使用任何 MSI 安装程序来安装它。我正在使用配置 Windows 服务应用程序的批处理脚本。

现在,我想在系统重新启动时向用户显示有关 Windows 服务更新的通知。

我了解到使用 WCF 或使用任务计划程序,但不确定哪个是更好的解决方案。

请指教

好的,有两种方法(因为 MS 禁用了我将要解释的第一个方法)通知您的用户有关服务更新的信息。

首先,糟糕、丑陋(在最近的版本中 non-working)方式:交互式服务。

您可以 configure a service as interactive,如果您添加 SERVICE_INTERACTIVE_PROCESS 标志,该服务将能够创建一个将附加到 Display_0 的 GUI。这会带来 一大堆 问题(尝试在没有用户会话时显示 GUI,如果您打开两个会话,则只有第一个会显示 GUI 等等)但它很便宜向用户显示数据的肮脏方式。避开它。

二、正确的方法:一个独立的GUI程序。

在这种情况下,您创建了一个向用户显示数据的辅助程序,您可以 start it with the user session or let the user decide if he wants to receive info by opening manually this application. This program needs to receive the updates from the service in some way, which is better is up to you but I would use UDP for this, in this way your service doesn't needs to care if any GUI app is connected or not, you 并且每个收听的人都会收到它,您不需要维护处理连接的服务器,您不需要存储来维护事件数据,它将支持任意数量的 GUI 实例(如果不止一个用户在机器中启动了一个会话,所有这些用户都会收到通知)。

但正如我所说,这是我的偏好,你可以随心所欲地做,你可以使用管道,使用包含事件的文件,并使用 FileSystemWatcher 在其中发生变化时得到通知,您甚至可以托管一个 ASP 实现 SignalR 集线器的 .net 网络应用程序,然后您可以在 html 中创建您的 GUI。哪种机制最适合您的场景由您决定。