次のコードを安全にタイムアウトするにはどうすればよいですか?
var client = new TcpClient("localhost", 6000);
new StreamReader(client.GetStream()).ReadLine(); // close the client if no line arrives after 5 seconds...
client.Close()
以前は、タイムアウトの期限が切れた場合に client.Close() を呼び出す別のスレッドでタイマーを実行していましたが、そのような呼び出しはスレッドセーフではないと思いますか?