Следующий код запускается более одного раза в день после его успешного завершения, и он не должен. Зачем?Ежедневная задача, выполняемая больше раз, чем должна
Этот код работает под собственным потоком и не является основным приложением приложения.
public bool bRunPortedNumberUpdater = false;
public bool bUpdatedPortedNumbersToday = false;
private void MainMethod()
{
while (true)
{
try
{
if (DateTime.Now >= DateTime.Parse("00:01")
&& DateTime.Now <= DateTime.Parse("00:59")
&& bUpdatedPortedNumbersToday == true)
{
bUpdatedPortedNumbersToday = false;
}
if (DateTime.Now >= DateTime.Parse("01:00")
&& DateTime.Now <= DateTime.Parse("03:30")
&& bRunPortedNumberUpdater == false
&& bUpdatedPortedNumbersToday == false)
{
bRunPortedNumberUpdater = true;
}
if (bRunPortedNumberUpdater)
{
WorkerMethod();
}
}
catch (Exception ex)
{
//log error
}
Thread.Sleep(TimeSpan.FromMinutes(10));
}
}
private void WorkerMethod()
{
while (bRunPortedNumberUpdater)
{
try
{
//do some long running job
//when long running job complete I set values as such:
bUpdatedPortedNumbersToday = true;
bRunPortedNumberUpdater = false;
}
catch (Exception ex)
{
//log error
}
Thread.Sleep(TimeSpan.FromMinutes(2));
}
}
Вы можете изменить '&& bUpdatedPortedNumbersToday == true' в' && bUpdatedPortedNumbersToday', то же самое на втором 'if'. Затем, почему вы проверяете каждые 10 и 2 минуты, если вы хотите, чтобы этот запуск выполнялся один раз в день? последнее, почему у вас нет комментариев, объясняющих, какова ваша логика, поэтому люди, которые могут вам помочь, могут действительно прочитать ваш код? – Noctis