- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NamedPipeServerStream 在两个进程之间进行通信。这是我初始化和连接管道的代码:
void Foo(IHasData objectProvider)
{
Stream stream = objectProvider.GetData();
if (stream.Length > 0)
{
using (NamedPipeServerStream pipeServer = new NamedPipeServerStream("VisualizerPipe", PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.Asynchronous))
{
string currentDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string uiFileName = Path.Combine(currentDirectory, "VisualizerUIApplication.exe");
Process.Start(uiFileName);
if(pipeServer.BeginWaitForConnection(PipeConnected, this).AsyncWaitHandle.WaitOne(5000))
{
while (stream.CanRead)
{
pipeServer.WriteByte((byte)stream.ReadByte());
}
}
else
{
throw new TimeoutException("Pipe connection to UI process timed out.");
}
}
}
}
private void PipeConnected(IAsyncResult e)
{
}
但它似乎从不等待。我经常收到以下异常:
System.InvalidOperationException:管道尚未连接。 在 System.IO.Pipes.PipeStream.CheckWriteOperations() 在 System.IO.Pipes.PipeStream.WriteByte(字节值) 在 PeachesObjectVisualizer.Visualizer.Show(IDialogVisualizerService windowService, IVisualizerObjectProvider objectProvider)
我认为等待返回后一切都应该准备就绪。
如果我使用 pipeServer.WaitForConnection() 一切正常,但如果管道未连接则挂起应用程序不是一个选项。
最佳答案
您需要调用EndWaitForConnection .
var asyncResult = pipeServer.BeginWaitForConnection(PipeConnected, this);
if (asyncResult.AsyncWaitHandle.WaitOne(5000))
{
pipeServer.EndWaitForConnection(asyncResult);
// ...
}
关于c# - 为什么我的 NamedPipeServerStream 不等待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595108/
我想知道是否可以限制远程机器访问服务器中的命名管道。我正在按如下方式初始化服务器: NamedPipeServerStream pipeServer = new NamedPipeServerStr
我从我的一位用户那里收到一条 Event Viever 条目,说发生了未经授权的访问异常。该进程从作为 SYSTEM 的服务启动。我能够将错误范围缩小到创建 NamedPipeServerStream
我有两个应用程序通过 NamedPipes 相互通信。我们称它们为 appServer(服务器)和 appClient(客户端)。他们成功连接并在一段时间内来回发送数据。然后,appClient 出乎
我正在设置命名管道服务器并从服务器管道读取...我允许 5 个可能的并发连接,它们是这样设置的。 Public Sub Start() Dim i As Integer While i
我想用 NamedPipeServerStream在应用程序的实例之间做一些小的 IPC。但是,如果服务器与客户端位于同一个终端服务器 session 上(如果应用程序在 TS 环境中运行),我只想将
我有一个使用 NamedPipeClientStream 的客户端和一个使用 NamedPipeServerStream 的服务器。 客户端可能在服务器之前启动,当它调用 clientStream.C
我目前正在为 NamedPipeServerStream 编写一个小包装器/NamedPipeClientStream那是完全Event基于而不是使用 AsyncCallbacks . 我为几乎所有可
我正在使用 NamedPipeServerStream 在两个进程之间进行通信。这是我初始化和连接管道的代码: void Foo(IHasData objectProvider) { Stre
我正在尝试在托管和非托管进程之间执行一些 IPC。我选择了命名管道。 我正在托管代码中启动一个线程,使用 NamedPipeServerStream : using (NamedPipeServerS
我是第一次尝试使用命名管道。在 MS 文档中找到 here ,它指出: EndWaitForConnection must be called exactly once for every call
目前在 .NET 中编写 Windows 服务,我正在使用命名管道让其他进程与我的服务进行通信。在更复杂的 NamedPipeServerStream 构造函数中,有一个参数,其描述性名称为 maxN
在使用NamedPipeServerStream类时,令我烦恼的是,对于每个传入连接,我需要创建新对象并调用它的方法WaitForConnection。 我想要做的是创建一个 NamedPipeSer
我对服务器/客户端架构有以下要求: 编写异步工作的服务器/客户端。 通信需要是双工的,即两端都可以读取和写入。 多个客户端可以在任何给定时间连接到服务器。 服务器/客户端应等待,直到它们可用并最终建立
文章C# Named Pipes with Async ,它是为 Async CTP 库 v3.0 编写的,使用的代码不能用 .NET 4.5 编译。具体 await pipe.WaitForConn
我正在尝试使用两个简单的 C# 表单解决方案在我的 Win-XP 工作站上实现双向命名管道通信。一种用于客户端,一种用于服务器。它们看起来几乎相同,并使用 NamedPipeServerStream
我正在尝试弄清楚如何在线程之间使用命名管道来传递类/结构/等等(我正在尝试使用秒表测量一些性能并将其与其他方法进行比较..) 无论如何,我找到的所有文档都在谈论使用 StreamReader 和 re
我想知道为什么 NamedPipes 存在于 .Net 中,如果我有一个应用程序想要创建某种代理来拦截其与目标服务器的连接,我将如何从中受益。 我想使用 NamedPipes 实现的是为 Minecr
我正在尝试使用命名管道在 Windows 服务和 WPF 应用程序之间进行通信,两者都是用 VB.Net 编写的。 Windows 服务一直在运行。 但是,在运行 WPF 应用程序几个小时后,将引发
我之前关于同一主题的问题:C#: Asynchronous NamedPipeServerStream understanding现在我有下一个: private void StartListenin
我正在使用 NamedPipeStream、客户端和服务器,我正在从客户端向服务器发送数据,数据是一个包含二进制数据的序列化对象。 当服务器端接收数据时,它总是有 MAX 1024 大小,而客户端发送
我是一名优秀的程序员,十分优秀!