@estry

Как остановить выполнение по достижению времени?

Привет.
Есть цикл в котором выполняется определенный код, например:
while(true)
{
	
	method1();
	
	method2();
	
	method3();
	
}


Как остановить этот цикл по истечении 3 минут?
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 4
vabka
@vabka Куратор тега C#
Токсичный шарпист
Используете CancellationToken и CancellationTokenSource с методом CancelAfter
Но было бы лучше, если бы вы конкретнее задачу описали, а то выглядит как X-Y проблема.
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Комментировать
@kttotto
пофиг на чем писать
Т.к. Вы не сказали, что используете TPL или пишете на WinForms, или WPF, то предполагаю, что это обычный синхронный код где-то в консоли.
Заведите таймер выше Вашего цикла, внутри цикла проверяете время и по достижению делаете выход из цикла через break. На коленке, без проверок, но думаю смысл уловите
var dateTimeStart = DateTime.Now;
const PERIOD = 3 * 60 * 1000;
while(true)
{
    ...
    var dateTimeNow = DateTime.Now;
    var interval = dateTimeNow - dateTimeStart;
    if(interval.Milliseconds > PERIOD)
    {
        break;
    }
}
Ответ написан
@cicatrix
было бы большой ошибкой думать
Если код синхронный без многопоточности, то
var t = DateTime.Now;
var interval = new TimeSpan(0,3,0);
while(DateTime.Now - t < interval)
{
 \\ ...
}

Если асинхронный или методы долгие, то по таймеру.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы