0

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

4

0 回答 0