异步命名管道,阻塞C#中的调用

时间:2013-08-01 18:00:11

标签: c# asynchronous

我有两个应用程序,我使用命名管道在它们之间进行通信。由于代码项目文章,管道工作得非常好。但我注意到,如果两个应用程序都没有启动。应用程序“A”一直在等待应用程序“B”,应用程序“A”无法启动。以下是创建异步管道的代码段:

            NamedPipeServerStream pipeServer = new NamedPipeServerStream(PipeName, PipeDirection.In, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous);

            pipeServer.BeginWaitForConnection(new AsyncCallback(WaitForConnectionCallBack), pipeServer);

这与我在App'A'和'B'中创建管道的方式相同,每个应用程序也有一个客户端。这就是我从客户端发送消息的方式:

NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", PipeName, PipeDirection.Out, PipeOptions.Asynchronous);

            // The connect function will indefinitely wait for the pipe to become available
            // If that is not acceptable specify a maximum waiting time (in ms)
            pipeStream.Connect(TimeOut);

            byte[] _buffer = Encoding.UTF8.GetBytes(SendStr);
            pipeStream.BeginWrite(_buffer, 0, _buffer.Length, AsyncSend, pipeStream);

那么如何才能提高性能,以便两个应用程序无需等待即可运行?截至目前,我已经保持1000毫秒的超时。我应该减少超时时间吗?或者我错过了一些看起来很可能的东西:)

0 个答案:

没有答案