1

新しいC#ソケットプログラミングを始めたばかりです。

Socket.ReceiveAsync()にSocketAsyncEventArgsを渡し、それを何度も再利用します。それは大丈夫です。

ただし、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 に答える