Я опубликую свой код, который, кажется, работает - мне было любопытно, поскольку я никогда ничего не делал с конвейерами. Я не нашел класс, который вы называете для серверной стороны, в соответствующем пространстве имен, поэтому вот код, основанный на 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");
}
Я могу повторить вышеуказанный блок несколько раз при работающем сервере, без проблем.