Я хочу зациклиться и спросить пользователя, хочет ли он продолжить. Если какое-то время нет ответа, все равно зациклитесь. [code]while (true) { Console.WriteLine("\nDo you want to continue? (Type 'no' or 'exit' to break, or wait 5 seconds to continue)"); var cts = new CancellationTokenSource(); var readTask = Task.Run(Console.ReadLine, cts.Token); var timeoutTask = Task.Delay(5000); var completedTask = await Task.WhenAny(readTask, timeoutTask); if (completedTask == timeoutTask) { Console.WriteLine("No response - continuing automatically..."); cts.Cancel(); } else { string? response = await readTask; if (response != null && (response.Equals("no", StringComparison.OrdinalIgnoreCase) || response.Equals("exit", StringComparison.OrdinalIgnoreCase))) { Console.WriteLine("Exiting loop. Goodbye!"); break; } else { Console.WriteLine("Continuing..."); Thread.Sleep(1500); } } } [/code] У меня есть две проблемы с этим кодом [list] [*]Он не всегда работает, первая итерация работает, но после первой итерации он иногда зацикливается, даже если я набираю «нет». [*]Он создает задачи, которые ждут вечно, это требует оптимизации, я думаю. [/list]