Occurs when ReadFromPipe catches an Exception.
public event EventHandler<ReadFromPipeExceptionEventArgs> ReadFromPipeExceptionEvent
public:
event EventHandler<ReadFromPipeExceptionEventArgs^>^ ReadFromPipeExceptionEvent
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);
}
The event handler receives an argument of type ReadFromPipeExceptionEventArgs containing data related to this event. The following ReadFromPipeExceptionEventArgs properties provide information specific to this event.
Parameter | Type | Description |
---|---|---|
sender | object | The source of the event |
e | ReadFromPipeExceptionEventArgs | The event data |
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