いくつかのスレッドを提供するクラス (A と呼びましょう) のインスタンスがあります。このインスタンスは、UdpClient クラスを介して UDP パケットのみを送信します。コンストラクターで UdpClient を初期化し、パケットの送信のみを行います。
次のようになります。
public class A{
private UdpClient m_Client;
public class A(string host, int port){
m_Client = new UdpClient(host, port);
}
public void Send(string dataToSend){
var data= encoding.GetBytes(dataToSend);
client.BeginSend(data, data.Length, null, null);
}
}
私の質問は次のとおりです。
UdpClient がスレッド セーフではないことはわかっています (MSDN のドキュメントによると)。ロック メカニズムを使用せずにマルチスレッドをサポートする最善の方法は何ですか?
送信ごとに UdpClient の新しいインスタンスを作成しますか? (ローカルの UdpClient 変数を使用するだけです)。パフォーマンス?
UdpClient に ThreadLocal を使用しますか? しかし、この状況で UdpClient を処分するのはどうでしょうか?
他の解決策はありますか?