質問: null; // 終了 yield break; } } ```
回答: IAsyncResult.isCompleted は単に非同期処理(TcpClient.Connect() )が完了したかどうかを示しているだけで、Tcp接続の成否は示していないのではないでしょうか。 つまり、Tcp接続が成功/失敗したかどうかにかかわらず、単に非同期の接続処理が終わった時点で true に変化するだけ。接続されたか失敗したかは、TcpClient.Connected を調べる必要がある、ということだと思います。 ### TcpClientの接続タイムアウトを制御するサンプル ``` var client = new TcpClient(); var result = client.BeginConnect(server_host, server_port, null, null); var success = result.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(10)); if (success) { Console.WriteLine("connected!"); client.EndConnect(result); } else { Console.WriteLine("connection timed out!"); } ```