异步Beginreceive怎么中止调用?(内详)
我的程序是利用异步,从客户端发送信息,然后接受服务器的信息。 问题在于在过程之中我要连续发送3条信息得到不同的回馈,但是在第一次BEGINRECEIVE调用异步操作时,就会陷入不停接收的循环(就是每隔N秒会刷新数据,重新接收)。 我实在是看不出来为什么会陷入这个循环,所以我想请教下有没有让第一次接收停止,并且不关闭SOCKET,接下来继续发送第二条信息,接收第二条信息的回馈。
大致就是要实现下面的目的(这里使用了FOREACH,总之就是要逐条完成发送接收)
foreach (string tmpcmd1 in cmdstate1a)
{
while (con1)
{
sendADone.Reset();
SendA(socketClient1a, tmpcmd1); //check status
sendADone.WaitOne();
receiveADone.Reset();
ReceiveA(socketClient1a); //ok, absorb output line
receiveADone.WaitOne();
printClientMsg(socketClient1a, response);
Thread.Sleep(1000);
}
}
但是执行到ReceiveA这一步时就会陷入循环,能不能设定时间阙值或者接收比特阙值来强制结束这一循环啊?(最好能附上较详细的CODE)。。非常感谢啊。。现在整个程序就纠结在这里。