可以将Socket.AcceptAsync()函数重用其参数SocketAsyncEventArgs吗?

时间:2012-08-21 07:32:43

标签: c# sockets

我刚刚开始我的新C#套接字编程。

我为Socket.ReceiveAsync()传递SocketAsyncEventArgs并一次又一次地重复使用它。它运作正常。

但是,如果我再次为Socket.AcceptAsync()执行此操作,则抛出InvalidOperationException。 如果我为此创建了SocketAsyncEventArgs的新实例,那就很好。

我应该为每个Socket.AcceptAsync()调用创建SocketAsyncEventArgs吗? (如果是这样,什么不适用于Socket.ReceiveAsync()?)

1 个答案:

答案 0 :(得分:0)

是。关于SocketAsyncEventArgs的要点是它是可重用的。 但是,对于每种类型的* Async方法,您需要1个SocketAsyncEventArgs。

我见过这样的游泳池课:

class AsyncEventArgsPool {
    SocketAsyncEventArgs GetEventArgs(string method);
}

你用“发送”,“接收”,“接受”等方式调用该方法......实现应该很简单。