我有一个在服务器上作为服务运行的程序。它以这种方式设置,因此服务器的控制台无需登录即可运行程序。
我想创建第二个winform程序,该程序将与服务程序通信,并显示GUI在服务程序有gui时通常会显示的任何状态信息。
我如何在这两个节目之间进行交谈?他们都在C#中,都在我的控制之下。
我甚至不确定该怎么称呼它,所以很可能以前已经回答了。
感谢您的帮助!
答案 0 :(得分:1)
您可以使用Microsoft消息队列(https://support.microsoft.com/en-us/kb/815811)等内容。
您的服务会将消息发布到WinForms应用程序已知的队列中。然后,您只需要从该队列中读取并根据需要处理消息。
在控制两个应用程序时,您可以创建自己的消息类型,并通过MSMQ对该对象进行序列化/反序列化。
答案 1 :(得分:0)
您的服务可以覆盖ServiceBase
的{{3}},以便接收命令。
然后,您可以通过OnCustomCommand(int)
在OnCustomCommand()
方法中,您必须if-else测试输入是int,或使用switch语句。
e.g。
protected override void OnCustomCommand(int command)
{
switch(command)
{
case 128:
Refresh();
break;
case 129:
WriteLog();
break;
// etc
}
}
如果您想进行双向通信,则可能需要为服务实施响应方式。这可以是消息队列,写入某些数据库表,文件,Web服务或其他内容。