Para alguém que é novo no IPC e nos Named Pipes, achei o pacote NuGet a seguir uma grande ajuda.
GitHub: Wrapper de tubulação nomeado para .NET 4.0
Para usar primeiro instale o pacote:
PS> Install-Package NamedPipeWrapper
Em seguida, um servidor de exemplo (copiado do link):
var server = new NamedPipeServer<SomeClass>("MyServerPipe");
server.ClientConnected += delegate(NamedPipeConnection<SomeClass> conn)
{
Console.WriteLine("Client {0} is now connected!", conn.Id);
conn.PushMessage(new SomeClass { Text: "Welcome!" });
};
server.ClientMessage += delegate(NamedPipeConnection<SomeClass> conn, SomeClass message)
{
Console.WriteLine("Client {0} says: {1}", conn.Id, message.Text);
};
server.Start();
Cliente de exemplo:
var client = new NamedPipeClient<SomeClass>("MyServerPipe");
client.ServerMessage += delegate(NamedPipeConnection<SomeClass> conn, SomeClass message)
{
Console.WriteLine("Server says: {0}", message.Text);
};
client.Start();
A melhor coisa para mim é que, diferentemente da resposta aceita aqui, ele suporta vários clientes conversando com um único servidor.
Thread.Sleep