Вот еще один хороший класс-обертка от Mr.Granoff https://github.com/granoff/Lockbox Спасибо
Я отправлю свой код, который, кажется, работает - мне было любопытно, так как я никогда ничего не делал с трубами. Я не нашел класс, который вы назвали для серверной стороны в соответствующем пространстве имен, поэтому вот код, основанный на NamedPipeServerStream . Обратный вызов вызван тем, что меня не беспокоили два проекта.
NamedPipeServerStream s = new NamedPipeServerStream("p", PipeDirection.In);
Action<NamedPipeServerStream> a = callBack;
a.BeginInvoke(s, ar => { }, null);
...
private void callBack(NamedPipeServerStream pipe)
{
while (true)
{
pipe.WaitForConnection();
StreamReader sr = new StreamReader(pipe);
Console.WriteLine(sr.ReadToEnd());
pipe.Disconnect();
}
}
И клиент делает следующее:
using (var pipe = new NamedPipeClientStream(".", "p", PipeDirection.Out))
using (var stream = new StreamWriter(pipe))
{
pipe.Connect();
stream.Write("Hello");
}
Я могу повторять вышеуказанный блок несколько раз при работающем сервере, без проблем.