如何解决从 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 举报,一经查实,本站将立刻删除。