Initializes a new instance of PipeServer.
public PipeServer(
string pipeName,
int count
)
public:
PipeServer(String^ pipeName, Int32 count)
pipeName
The name for the named pipe that will be use for inter-process communication.
count
The maximum number of PipeClient client instances that share the same name.
The pipeName must be the same for both the PipeServer and PipeClient constructors.
using Leadtools.Dicom.AddIn;
using Leadtools.Dicom.AddIn.Common;
using Leadtools.Dicom.Common.Extensions;
///
// This example shows how a client and server can communicate using a named pipe
public static class PipeServerExample
{
static AutoResetEvent clientFinishedEvent = new AutoResetEvent(false);
static AutoResetEvent serverFinishedEvent = new AutoResetEvent(false);
private static void Client_ReceivedMessage(object sender, ReceivedMessageEventArgs e)
{
if (e.Message != null && e.Message.Length > 0)
{
ServiceMessage serviceMessage = AddInUtils.BinaryDeSerialize<ServiceMessage>(e.Message);
string msg = $"Client received message: Service[{serviceMessage.Service}]: {serviceMessage.Message}";
Console.WriteLine(msg);
}
clientFinishedEvent.Set();
}
private static void Server_ReceivedMessage(object sender, Leadtools.Dicom.AddIn.Common.ReceivedMessageEventArgs e)
{
if (e.Message != null && e.Message.Length > 0)
{
ServiceMessage serviceMessage = AddInUtils.BinaryDeSerialize<ServiceMessage>(e.Message);
string msg = $"Server received message: Service[{serviceMessage.Service}]: {serviceMessage.Message}";
Console.WriteLine(msg);
PipeServer pipeServer = sender as PipeServer;
if (pipeServer != null)
{
ServiceMessage serverServiceMessage = new ServiceMessage();
serverServiceMessage.Service = "MyServiceName";
serverServiceMessage.Message = "MyServerMessage";
Console.WriteLine($"Server sending message: {serverServiceMessage.Message}");
pipeServer.SendMessage(serverServiceMessage);
}
}
serverFinishedEvent.Set();
}
private static void Server_ReadFromPipeExceptionEvent(object sender, ReadFromPipeExceptionEventArgs e)
{
Console.WriteLine(e.ReadPipeException.Message);
}
public static void RunClient(string pipeName)
{
PipeClient client = new PipeClient(pipeName);
client.ReceivedMessage += Client_ReceivedMessage;
client.Start();
string clientMessage = "MyClientMessage";
Console.WriteLine($"Client sending message: {clientMessage}");
client.SendMessage(clientMessage);
clientFinishedEvent.WaitOne();
}
public static void RunServer(string pipeName)
{
PipeServer server = new PipeServer(pipeName, 10);
server.ReadFromPipeExceptionEvent += Server_ReadFromPipeExceptionEvent;
server.ReceivedMessage += Server_ReceivedMessage;
server.Start();
serverFinishedEvent.WaitOne();
}
public static void PipeServerSample()
{
// For simplicity, this example runs two threads that communicate using a named pipe.
// However, the client and server can also communicate when running in different processes.
string pipeName = "MyPipeName";
Task taskServer = Task.Run(() => RunServer(pipeName));
Task taskClient = Task.Run(() => RunClient(pipeName));
Task[] tasks = { taskServer, taskClient };
Task.WaitAll(tasks);
}
Leadtools.Dicom.AddIn.Common Namespace
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.