以下代码在成功完成后每天运行一次以上,但不应如此。为什么?
请注意,此代码在其自己的线程上运行,而不是主应用程序的线程。
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));
}
}