我写了一些使用命名管道将字符串从一个应用程序发送到另一个应用程序的代码。它一次正常工作,但当客户端尝试第二次发送到服务器应用程序时,它会在尝试连接到客户端时冻结。在向NamedPipeServerStream发送请求后命名管道应用程序被冻结
服务器代码是这样的:
static void StartServer()
{
Task.Factory.StartNew(() =>
{
var server = new NamedPipeServerStream("MyPipe");
server.WaitForConnection();
StreamReader reader = new StreamReader(server);
while (true)
{
var line = reader.ReadLine();
if (line != null)
{
System.Windows.Forms.MessageBox.Show("Data: : " + line);
}
}
});
}
的客户端代码:
private void Test()
{
using (var client = new NamedPipeClientStream("MyPipe"))
{
client.Connect();
StreamWriter writer = new StreamWriter(client);
writer.WriteLine("INCOMING:1234567");
writer.Flush();
client.Dispose();
}
}
通过跟踪代码,我可以看到服务器代码回路连续的任何线被检查阅读但没有找到任何。当Test()
方法被再次调用时,客户端挂在client.Connect()
调用上。没有例外。
任何人都可以看到我要去哪里错了吗?
感谢您的答复,我会看到关于重新写它的第一种方式。 – GrandMasterFlush 2013-04-30 12:58:41