我正在编写一个Windows服务和一个单独的GUI程序,我希望它们与命名管道进行通信。 Windows服务是管道服务器,GUI将是客户端。
问题是当我的客户端连接到pipeServer时,我的BeginRead异步回调会一直触发。客户端没有发送任何数据。
const int buffersize= 255;
byte[] buffer = new byte[buffersize];
private void newConnection(IAsyncResult iar) {
//stop waiting for connection
pipeServer.EndWaitForConnection(iar);
//register callback
beginreadResult = server.BeginRead(buffer, 0, buffFormaat, newMessage, pipeServer);
}
public void newMessage(IAsyncResult r)
{
try
{
pipeServer.EndRead(beginreadResult);
}catch(Exception e){
Console.WriteLine(e.Message);
System.Environment.Exit(0);
}
string message = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
Console.WriteLine("new message: " + message);
beginreadResult= server.BeginRead(buffer, 0, buffersize, newMessage, server);
}
我无法弄清楚为什么newMessage()回调会被调用,有人想法吗?