在启动过程中初始化服务器时,不会调用AsyncCallback
之后的Socket.BeginReceive
。
mSocket.BeginReceive(mBuffer, 0, mBuffer.Length, SocketFlags.None, new AsyncCallback(onReceive), mSocket);
private void onReceive(IAsyncResult result)
{
if (mSocket == null) return;
Monitor.Enter(mLockObj);
mSocket.EndReceive(result);
//...
我需要创建一些超时逻辑,还是可以捕获和处理的异常情况?
答案 0 :(得分:1)
由于AsyncCallback
很好,async
,它将一直等待无限期地接收,直到返回为止,因此不会出现“超时”异常。
this thread中探讨了一些选项,但是,要回答您的问题,您基本上必须实现自己的超时方法。