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