首页 > 解决方案 > 如何从 Windows 服务获得答案

问题描述

我有一个 Windows 服务和一个 NotifyIcon-Applicaiton (Sys-Tray) 应该与该服务通信。应用程序应该发送一个命令并从服务接收一个端口,用于提供进一步通信的套接字。

该服务覆盖 OnCustomCommand 方法,但我不知道如何向调用程序发送答案。

    protected override void OnCustomCommand(int command)
    {
        switch (command)
        {
            case 'p':
                // SEND Port number
                break;
            case 's':
                // SEND Service Name
                break;
            case 'n':
                // SEND Notification
                break;
        }

        base.OnCustomCommand(command);
    }

通知图标应用程序

var serviceController = new ServiceController("ATLED Service"); serviceController.ExecuteCommand((int)'p');

标签: c#windows-servicesservicecontrollersystray

解决方案


你可以有不同的方法来做到这一点

  1. 您可以使用 TCP 端口,该端口正在侦听来自服务器的命令回复
  2. 您可以在应用程序端使用 signalR 并使用它连接服务和应用程序
  3. 您还可以使用共享内存,或者可以是当应用程序存在某些内容时由服务创建/写入的文件,或者也可以使用数据库

推荐阅读