私は C# の経験はかなりありますが、この問題に遭遇したことはありません。経験豊富な C# 開発者がこの状況で何をすべきかを知っているかどうか疑問に思っていました。問題のメソッドのコードは次のとおりです: (問題はコードのブロックの後に説明されています)
public void ConnectToRemoteServer()
{
Console.WriteLine("Attempting to connect to " + config.GetString(ConfigParams.MasterServerIp) + ":" + config.GetString(ConfigParams.MasterServerPort));
TcpClient client = new TcpClient();
IPEndPoint address = new IPEndPoint(IPAddress.Parse(config.GetString(ConfigParams.MasterServerIp)), config.GetInt(ConfigParams.MasterServerPort));
Console.WriteLine("Connecting...");
//Begin asynchronous sever communication
if (this.autoTask == null)
{
communicator = new CommunicationListener(client, config, address);
}
else
{
communicator = new CommunicationListener(client, config, address, this.autoTask);
}
Thread communicationThread = new Thread(new ThreadStart(communicator.Start));
communicationThread.Start();
}
私が疑問に思っているのは、このコード ブロックで using ステートメントを使用する必要があるかどうかです。TcpClient
が interface を実装していることはわかっているためIDisposable
、 using ステートメントにカプセル化する必要がありますが、この場合、 を使用する新しいスレッドが開始されるため、が使用される前にブロックTcpClient
の終わりに到達します。 . では、ここでステートメントを使用する必要がありますか?using
TcpClient
using