我正在编写一个 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() 回调一直被调用,有人知道吗?