namedpipe异步读取调用没有数据

时间:2014-07-12 17:40:49

标签: c# asynchronous named-pipes beginread

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

0 个答案:

没有答案