【问题标题】:Windows Service with WPF management tool带有 WPF 管理工具的 Windows 服务
【发布时间】:2011-03-17 13:08:36
【问题描述】:

我正在尝试使用 C# 在 .net 中创建一个在用户登录之前运行的 Windows 服务... 然后当用户登录时,系统托盘中(时钟旁边)会出现一个符号,向用户显示服务正在运行。 通过双击该符号,应该向用户显示一个配置实用程序(用 wpf 编写),这样他就可以配置服务,从中读取数据等等..

是否有可能在一个应用程序中执行此操作?

提前感谢您的帮助!!!

【问题讨论】:

    标签: wpf windows service system tray


    【解决方案1】:

    不,您不能对一个应用程序执行此操作,因为服务在不同会话中由不同用户运行。您需要创建两个应用程序并在两者之间实现一些通信。

    我不建议直接使用命名管道(如Kieren Johnstone suggested),而是看看WCF,它是为进程间通信而设计的,它很好地抽象了通信技术的实现细节。这是一个可以适当地帮助您使用 WCF 的链接:http://www.switchonthecode.com/tutorials/wcf-tutorial-basic-interprocess-communication

    最好的问候,
    奥利弗·哈纳皮

    【讨论】:

      【解决方案2】:

      在一个应用程序中,没有。服务在会话 0 中运行,请参见此处:

      http://www.microsoft.com/whdc/system/sysinternals/session0changes.mspx

      您最好的选择是使用命名管道,请参见此处:

      http://www.switchonthecode.com/tutorials/dotnet-35-adds-named-pipes-support

      ....或内存映射文件,请参见此处:

      http://msdn.microsoft.com/en-us/library/dd997372.aspx

      在more-.NETty的范围内,你也可以使用Remoting。您需要提出一些接口或协议来促进服务和管理实用程序之间的通信。管理进程启动/停止会更容易,您可以使用 ServiceController 类 (MSDN ref)。

      希望能有所帮助(而且不会太令人沮丧)!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-02
        • 2019-05-05
        • 2011-06-16
        • 1970-01-01
        • 1970-01-01
        • 2013-07-18
        • 2019-01-05
        • 1970-01-01
        相关资源
        最近更新 更多