Voor communicatie tussen 2 verschillende .NET projecten (executables) maak ik gebruik van named pipes:
Als ik deze manier test in een project met aanroep naar de server en client op de volgende manier gaat het goed:
Het gekke is, dat op het moment dat ik deze twee objecten gebruik in twee verschillende projecten, dat er dan een exceptie optreedt in de pipe: Pipe is broken.
Dit gebeurt op het moment dat de server iets terug stuurt naar de client. Het bericht dat de client heeft gestuurd komt wel aan bij de server.
Nu begin ik me sterk af te vragen of het gebruik van named pipes anders werkt in het geval van verschillende processen. Kan iemand met ervaring hiermee me uit de brand helpen?
code:
1
2
3
4
5
6
7
| new NamedPipeServerStream(PipeName, PipeDirection.InOut, 1, PipeTransmissionMode.Message, PipeOptions.Asynchronous, BUFFER_SIZE, BUFFER_SIZE); |
Als ik deze manier test in een project met aanroep naar de server en client op de volgende manier gaat het goed:
code:
1
2
3
4
5
6
7
8
| Server = new NamedPipeServer("pipename"); Server.OnReceivedMessage += new EventHandler<ReceivedMessageEventArgs>(Server_OnReceivedMessage); new Thread(new ThreadStart(Server.Start)).Start(); NamedPipeClient Client = new NamedPipeClient("pipename"); Client.OnReceivedMessage += new EventHandler<ReceivedMessageEventArgs>(Client_OnReceivedMessage); Client.Start(); Client.Write("Test"); |
Het gekke is, dat op het moment dat ik deze twee objecten gebruik in twee verschillende projecten, dat er dan een exceptie optreedt in de pipe: Pipe is broken.
Dit gebeurt op het moment dat de server iets terug stuurt naar de client. Het bericht dat de client heeft gestuurd komt wel aan bij de server.
Nu begin ik me sterk af te vragen of het gebruik van named pipes anders werkt in het geval van verschillende processen. Kan iemand met ervaring hiermee me uit de brand helpen?