Есть несколько способов сделать это:
1) Асинхронное ожидание без блокировки потока:
private static async Task Listen(TcpListener listener)
{
//Start listening
listener.Start();
Console.WriteLine("Waiting for a connection...\n");
//Accept connection
TcpClient client = listener.AcceptTcpClient();
await Task.Delay(60000); // async wait for 1 minute
listener.Stop();
//CHECK
Console.WriteLine("Accepted the connection\n");
ClientHandle(client);
}
Не забудьте дождаться этого метода от звонящего:
await Listen(yourListener);
2) Использование Timer (System.Threading.Timer)
:
private static void Listen(TcpListener listener)
{
//Start listening
listener.Start();
var timerTimer = new Timer((state) => { listener.Stop(); }, null, 60000, Timeout.Infinite);
Console.WriteLine("Waiting for a connection...\n");
//Accept connection
TcpClient client = listener.AcceptTcpClient();
//CHECK
Console.WriteLine("Accepted the connection\n");
ClientHandle(client);
}
Вы также можете использовать любой другой таймер.