C# 如何从windows服务获取答案
我有一个windows服务和一个NotifyIcon应用程序(系统托盘),它应该与服务通信。应用程序应该发送一个命令,并从服务接收一个端口,用于提供进一步通信的套接字 该服务覆盖OnCustomCommand方法,但我不知道如何向调用程序发送应答C# 如何从windows服务获取答案,c#,windows-services,servicecontroller,systray,C#,Windows Services,Servicecontroller,Systray,我有一个windows服务和一个NotifyIcon应用程序(系统托盘),它应该与服务通信。应用程序应该发送一个命令,并从服务接收一个端口,用于提供进一步通信的套接字 该服务覆盖OnCustomCommand方法,但我不知道如何向调用程序发送应答 protected override void OnCustomCommand(int command) { switch (command) { case 'p':
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=新serviceController(“ATLED服务”);
serviceController.ExecuteCommand((int)'p')代码>您可以使用不同的方法来实现这一点
您可以使用TCP端口,该端口正在侦听来自服务器的命令回复
您可以在应用程序端使用信号器,并使用该信号器连接服务和应用程序
你们也可以使用共享内存,或者是一个文件,当应用程序中有东西时,该文件由服务创建/写入,或者也可以使用数据库
AFAIK自定义命令是“单向”的。如果您的服务应侦听客户端TCP(?)连接,通常只选择一个客户端熟悉的连接。有一个与服务通信的套接字,但应用程序不知道只有服务知道的端口。我认为静态端口不是一个好方法(如果端口被占用会发生什么?)如果端口80被占用,IIS会做什么?如果你真的想加强防御,那么你应该将选择的端口写入一个配置文件,并让应用程序检查该文件。或者,使用。是否有方法获取服务的安装路径,以便我可以调整相对位置来存储文件?请尝试使用此代码获取路径AppDomain.CurrentDomain.BaseDirectory