1

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

我将 SocketAsyncEventArgs 传递给 Socket.ReceiveAsync() 并一次又一次地重用它。它工作正常。

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

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

4

1 回答 1

0

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

我见过为此制作的池类,例如:

class AsyncEventArgsPool {
    SocketAsyncEventArgs GetEventArgs(string method);
}

然后你用“Send”、“Receive”、“Accept”等调用该方法......实现应该很简单。

于 2012-08-21T07:55:05.513 回答