命名管道错误未在try / catch中捕获

时间:2016-10-19 10:17:15

标签: c# pipe try-catch named-pipes

我正在使用以下代码段通过命名管道发送数据:

public void send(byte[] message, int timeOut = 1000)
{
    try
    {
        NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", "TestPipe1234", PipeDirection.Out, PipeOptions.Asynchronous);

        pipeStream.Connect(timeOut);
        pipeStream.BeginWrite(message, 0, message.Length, aSyncSend, pipeStream);
    }
    catch (TimeoutException ex)
    {
        Debug.WriteLine(ex.Message);
    }
}

有时,我收到以下错误:

  

System.IO.IOException:信号量超时时间已过期。

     

at System.IO .__ Error.WinIOError(Int32 errorCode,String maybeFullPath)

     

at System.IO.Pipes.NamedPipeClientStream.Connect(Int32 timeout)

     

[...]

我不确定这种情况何时发生(没有人听另一方?)但是在任何情况下我都不明白为什么这个错误没有被try catch块捕获。

你知道发生了什么吗?欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

试试这个。

try
{
    NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", "TestPipe1234", PipeDirection.Out, PipeOptions.Asynchronous);

    pipeStream.Connect(timeOut);
    pipeStream.BeginWrite(message, 0, message.Length, aSyncSend, pipeStream);
}
catch (Exception)
{
}