Для тех, кто плохо знаком с IPC и именованными каналами, я обнаружил, что следующий пакет NuGet будет большим подспорьем.
GitHub: именованный конвейер для .NET 4.0
Чтобы использовать сначала установите пакет:
PS> Install-Package NamedPipeWrapper
Затем пример сервера (скопирован по ссылке):
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();
Пример клиента:
var client = new NamedPipeClient<SomeClass>("MyServerPipe");
client.ServerMessage += delegate(NamedPipeConnection<SomeClass> conn, SomeClass message)
{
Console.WriteLine("Server says: {0}", message.Text);
};
client.Start();
Лучшее в этом для меня то, что, в отличие от принятого здесь ответа, он поддерживает несколько клиентов, разговаривающих с одним сервером.
Thread.Sleep