Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 异步命名管道,在C中阻止调用#_C#_Asynchronous - Fatal编程技术网

C# 异步命名管道,在C中阻止调用#

C# 异步命名管道,在C中阻止调用#,c#,asynchronous,C#,Asynchronous,我有两个应用程序,我使用命名管道在它们之间进行通信。多亏了一篇代码项目文章,管道工作得非常好。但我注意到如果两个应用程序都不能启动。应用程序“A”一直在等待应用程序“B”,而应用程序“A”未启动。以下是创建aync管道的代码段: NamedPipeServerStream pipeServer = new NamedPipeServerStream(PipeName, PipeDirection.In, 1, PipeTransmissionMode.Byte, Pipe

我有两个应用程序,我使用命名管道在它们之间进行通信。多亏了一篇代码项目文章,管道工作得非常好。但我注意到如果两个应用程序都不能启动。应用程序“A”一直在等待应用程序“B”,而应用程序“A”未启动。以下是创建aync管道的代码段:

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

            pipeServer.BeginWaitForConnection(new AsyncCallback(WaitForConnectionCallBack), pipeServer);
这与我在应用程序“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毫秒的超时。我应该缩短超时时间吗?或者我遗漏了什么,看起来很可能:)

两个应用程序将在同一台机器上。WCF创建了一个本地服务器,不是吗?WCF服务器客户端infra可以在托管应用程序(您的常规控制台/应用程序)中,也可以在Windows服务或IIS中,我构建了一个项目,我有两个进程,都包含WCF服务和代理,用于相互通信。它工作得很好。但这取决于您是否需要它。您将有两个类—代理客户端类和接收客户端调用的服务主机类。。一个进程中的客户端类,另一个进程中的servicehost类,以及两个项目都必须知道服务接口(操作),这样在询问有关WCF的问题时会更加有效。。很有帮助