在线等!一个异步回调的问题!
比如有个程序是这样的
//比如我在这里调用了beginReceive的异步接收
.......
......
private void ReceiveCallback(IAsyncResult ar)//这个是接收数据的回掉函数
{
......
......
int len = Socket.Receive(buff,0,buff.Length,SocketFlag.None)//??为什么我这里再次用同步的Receive时 执行到这就停了
}
小弟第一次用异步传送,望各位讲解下异步回调,和回调是怎么工作的?
------解决方案--------------------private void ReceiveCallback(IAsyncResult ar)//这个是接收数据的回掉函数
{
......
......
int len = Socket.EndReceive(ar)//??为什么我这里再次用同步的Receive时 执行到这就停了
}
-=-------------------------
应该用EndReceive来获取异步接受的到的结果 buffer数组弄成成全局变量 buffer里面就是你读到的
Reset表示已经发出信号了
WaitOne就是等待这个信号的 一旦收到就继续 没有就一直等待 知道Reset
Reset一般在另外一个线程上执行 表示那个线程完成了
WaitOne在主线程上等待 收到信号就继续了 不等待了
------解决方案--------------------Reset():将信号的状态设置为非终止状态,即不让操作系统发出信号,从而导致那些只有收到信号才能继续执行的线程处于阻塞状态
Set():将事件状态设置为终止状态,这样等待的线程将会收到信号,从而由等待状态转为继续执行.
WaitOne():阻塞当前线程,等待操作系统为其发出信号,直到收到信号磁带解除阻塞.