c# - 如何制作具有用于管理它的任务托盘图标的 Windows 服务?

标签 c# windows

<分区>

我熟悉编写 Windows 服务应用程序。我已经使用各种方法编写了一些 - 第三方库、.NET 提供的方法等。不过,我以前的服务应用程序都没有任何方式与它们交互。

我现在需要编写一个 Windows 服务应用程序,但它需要一个任务托盘图标,当您单击它时可能会弹出一个“管理 GUI”。

执行此操作的合适模式是什么?

服务是否应该是它自己的应用程序,但能够通过外部方式与之交互——也许是它轮询配置更改的数据库?它应该使用 IPC 还是什么?

有没有办法使 Windows 服务也具有 GUI,以便管理 GUI 和服务都只是同一个应用程序?

最佳答案

Is there a way to make a windows service also have a GUI

没有;根据定义,Windows 服务没有(交互式)桌面。任何指向让它发挥作用的东西充其量都是非常肮脏的黑客攻击。

Is there a way to make a windows service also have a GUI so that the management GUI and the service are all just the same application?

您可以通过将常用的东西放入库或其他东西来共享代码。您甚至可以共享整个代码库并使用 --service 命令行参数(例如)和不带(或带 --gui)参数的 GUI 部分运行应用程序( s).

interacted with through external means - perhaps a database that it polls for config changes?

这是一种可能性,但不是最快或最有效的

Should it use IPC or something?

我会选择那个。你可以使用任何你想要的; REST API、WCF、TCP/UDP 连接、套接字、(命名)管道、内存映射 I/O...无论您选择什么,它都将是某种 IPC。您甚至可以发送 custom commands为您提供服务,但这非常非常有限。

如果由我决定,我会使用 WCF 来实现它。但我有点偏见,我做了很多 WCF 的东西。

关于c# - 如何制作具有用于管理它的任务托盘图标的 Windows 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54540524/

相关文章:

c++ - 有没有一种方法可以衡量应用程序/程序占用了多少系统资源(例如 RAM)

c++ - linux 中 windows SYSTEM_INFO 结构的替代方案

windows - 在哪些情况下,GetSystemInfo/GetLogicalProcessorInformationEx 在同一程序运行中返回不同的处理器计数?

c# - 如何将 HTML 属性添加到 Razor HtmlHelper?

c++ - 服务器套接字如何使用C++在Windows中拔出网络电缆

windows - 在 Windows 主机上访问 docker 容器 URL

c# - 将新行数据添加到 gridview asp.net c#

c# - 在 Xamarin 中发布 Json 字符串

c# - 如何将 PDF 打印到默认打印机以外的其他打印机

c# - .NET 秒表 - 性能损失