c# - 如何从 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');
解决方案
你可以有不同的方法来做到这一点
- 您可以使用 TCP 端口,该端口正在侦听来自服务器的命令回复
- 您可以在应用程序端使用 signalR 并使用它连接服务和应用程序
- 您还可以使用共享内存,或者可以是当应用程序存在某些内容时由服务创建/写入的文件,或者也可以使用数据库
推荐阅读
- windows - 如何在 Windows WSL 下安装和运行 CentOS 8.2?
- javascript - 使用 DOM 元素单击更改变量的值
- reactjs - 使用jsx错误时反应必须在范围内
- python - 如何在 PyCharm 中运行我的 MATLAB 文件?
- c# - 处理文件“文件位置”时,Msbuild 失败并显示消息:找不到指定的 SDK“Microsoft.NET.Sdk”
- reactjs - 如何将一个函数作为参数传递给另一个通过 React 列表映射的函数?
- jquery - Rails 500 服务器错误,对 form_for 部分的 Ajax 请求
- java - 如何在 Azure Pipelines 中发布多模块 Maven 构建?
- javascript - 如果表格被隐藏,Javascript将表格位置向上移动
- xamarin.forms - ReactiveUI Observable 作为 Prism 中的 Property Helper 等价物?