微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 namedpipeServerStream 读取时如何处理超时?

如何解决从 namedpipeServerStream 读取时如何处理超时?

我有一个 namedpipeServerStream,我想在遇到超时时停止读取它的管道。

这些是我的 Read 和 Read 回调函数,我在主程序循环中反复调用 Read, 实际上,我的问题是当 endread 发生超时时,如何手动(或以任何其他方式)调用我的回调函数

 private void Read()
 {
       tmpBuff = new byte[600];
       inRead = true;
       ReadTimer.Enabled = true;
       len = 0;
       try
       {
            _namedpipeserver.BeginRead(tmpBuff,600,ReadCallback,null);
       }
       catch (Exception ex) //disconnected/disposed
       {
           return;
       }
 }

 static void ReadCallback(IAsyncResult ar)
 {
     int readbyte;
     try
     {
         readbyte = _namedpipeserver.EndRead(ar);
         if (readbyte > 0)
         {
             len = readbyte;
             int packetLen = tmpBuff[0] + (tmpBuff[1] * 256);
             Console.WriteLine(" packet len: " + packetLen + " bytes ");
             readbyte = 0;
             array = null;
             array = new byte[packetLen];
             Array.copy(tmpBuff,2,array,packetLen);
         }
     }
     catch (IOException) //closed
     {
         return;
     }
     inRead = false;
 }

感谢任何帮助。谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。