1
你好,我在我的NamedPipeServer上有一個arror。C#NamedPipeServer新寫入後破壞
服務器和客戶端工作正常,如果我使用單流WriteLine 和刷新。
我嘗試寫新行後,我有錯誤IOException管道損壞。
服務器管
NamedPipeServerStream pipeServer = new NamedPipeServerStream("testpipe", PipeDirection.InOut, 4);
StreamReader sr = new StreamReader(pipeServer);
StreamWriter sw = new StreamWriter(pipeServer);
do
{
try
{
pipeServer.WaitForConnection();
string test;
sw.WriteLine("Waiting");
sw.Flush();
pipeServer.WaitForPipeDrain();
test = sr.ReadLine();
Console.WriteLine(test);
if (test.Contains("Mouse"))
{
Invoke((Action)delegate
{
listBox1.Items.Add(test);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
});
}
if (test.Contains("Bt1"))
{
Invoke((Action)delegate
{
listBox2.Items.Add("BT");
});
}
}
catch (Exception ex) { throw ex; }
finally
{
pipeServer.WaitForPipeDrain();
if (pipeServer.IsConnected) { pipeServer.Disconnect(); }
}
} while (true);
客戶端管
NamedPipeClientStream pipeClient = new NamedPipeClientStream(".",
"testpipe", PipeDirection.InOut, PipeOptions.None);
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (pipeClient.IsConnected != true) { pipeClient.Connect(); }
StreamReader sr = new StreamReader(pipeClient);
StreamWriter sw = new StreamWriter(pipeClient);
string temp;
temp = sr.ReadLine();
if (temp == "Waiting")
{
try
{
//First Write Working!
sw.WriteLine("Mouse Pos: " + e.Location);
sw.Flush();
//Second Write i get Exception and Pipe Broken
sw.WriteLine("Bt1:1");
sw.Flush();
pipeClient.Close();
}
catch (Exception ex) { throw ex; }
}
}
如何解決這個問題?
我試過你的例子Renè,但是客戶端被凍結了。 –