首页系统综合问题WPF-14 进程间相互通信

WPF-14 进程间相互通信

时间2022-12-06 22:00:05发布分享专员分类系统综合问题浏览76

业务背景:笔者当初在做餐馆收银软件的时候svchost exe是什么进程 ,客户提了一个需求,由于老外比较喜欢刷卡支付,所以在做支付订单时需要多外接几个pos刷卡机,当4-5个人同时结账时,不用排队,这是一个再合理不过的需求,但是,当我们同时拿到两台pos刷卡机做实验时,当我们加载dll到我们WPF应用程序中时,发现不能同时启动多个pos刷卡机的实例,一个进程只能加载一个实例,如果同时启动多个实例,只有一个有效,于是我们在应用程序启动的时候,根据客户的配置,动态启动我们预先设置好的exe程序,我们将pos刷卡机提供的组件宿主到不同的exe文件中,这样我们主程序只需要和不同exe文件之间进行通信就可以了

管道之间通信主要用到C#中两个类分别为NamedPipeClientStream和NamedPipeServerStream类

客户端:

WPF-14 进程间相互通信

privatevoidSendMessage_Click( objectsender, RoutedEventArgs e )

using(NamedPipeClientStream namedPipeClient = newNamedPipeClientStream( "Server-pipe"))

namedPipeClient.Connect( 3000);

varmessage = "How are you";

byte[] outMessageByte = UTF8Encoding.UTF8.GetBytes(message);

namedPipeClient.Write(outMessageByte, 0, outMessageByte.Length);

byte[] inMessageByte = newbyte[ 2048];

namedPipeClient.Read(inMessageByte, 0, 2048);

varinMessage = UTF8Encoding.UTF8.GetString(inMessageByte).TrimEnd( '\0');

txtMesage.Text=inMessage;

服务器端:

using(NamedPipeServerStream namedPipeServer = newNamedPipeServerStream( "Server-pipe", PipeDirection.InOut, 4, PipeTransmissionMode.Message))

while( true)

if(!namedPipeServer.IsConnected)

namedPipeServer.WaitForConnection;

byte[] inMessageByte = newbyte[ 2048];

namedPipeServer.Read(inMessageByte, 0, 2048);

stringmessage = UTF8Encoding.UTF8.GetString(inMessageByte);

stringresult = "I'm fine ,thank you";

try

Console.WriteLine(message);

catch(Exception ex)

Console.WriteLine(ex.Message);

if(result != string.Empty)

byte[] payResult = UTF8Encoding.UTF8.GetBytes(result);

namedPipeServer.Write(payResult, 0, payResult.Length);

namedPipeServer.Disconnect;

WPF-14 进程间相互通信

这节我们主要介绍C#中如何在不同进程之间进行通信svchost exe是什么进程 ,希望对各位有帮助

爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

程间相WPF14程间相14svchost exe是什么进程
2022下半年最火的是什么?足联熊NFT推动文化数字战略新进程 Windows10安装Vmware虚拟机过程,出现安装窗口隐藏一大半