我刚刚开始我的新C#套接字编程。
我为Socket.ReceiveAsync()传递SocketAsyncEventArgs并一次又一次地重复使用它。它运作正常。
但是,如果我再次为Socket.AcceptAsync()执行此操作,则抛出InvalidOperationException。 如果我为此创建了SocketAsyncEventArgs的新实例,那就很好。
我应该为每个Socket.AcceptAsync()调用创建SocketAsyncEventArgs吗? (如果是这样,什么不适用于Socket.ReceiveAsync()?)
答案 0 :(得分:0)
是。关于SocketAsyncEventArgs的要点是它是可重用的。 但是,对于每种类型的* Async方法,您需要1个SocketAsyncEventArgs。
我见过这样的游泳池课:
class AsyncEventArgsPool {
SocketAsyncEventArgs GetEventArgs(string method);
}
你用“发送”,“接收”,“接受”等方式调用该方法......实现应该很简单。