Я унаследовал службу Windows для улучшения в моей компании. В настоящее время служба ежедневно печатает отчет о конкретных записях в базе данных в назначенное время запуска. Я добавляю условие, чтобы установить время второго запуска для запуска того же отчета, пропуская определенные записи. Проблема, с которой я сталкиваюсь, заключается в том, что я установил два отдельных времени запуска (обычно с интервалом около 15 минут), и он, кажется, пропускает первое время запуска и запускает только второе, если файлы отчета уже существуют.
public partial class Service1 : ServiceBase
{
Timer t1;
Timer t2;
bool Condition;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
t1 = new Timer();
t1.Interval = (1000 * 60 * 3); // 3 minutes...
t1.Elapsed += new ElapsedEventHandler(t1_Elapsed);
t1.AutoReset = true;
t1.Enabled = true;
if (Condition) //Condition is an option in the configuration to determine if this timer should even start
{
t2 = new Timer();
t2.Interval = (1000 * 60 * 3); // 3 minutes...
t2.Elapsed += new ElapsedEventHandler(t2_Elapsed);
t2.AutoReset = true;
t2.Enabled = true;
}
}
private void t1_Elapsed(object sender, ElapsedEventArgs e)
{
if (File.Exists("FileName1"))
{
string CurrentTime = DateTime.Now.ToShortDateString();
if (CurrentTime == ConfigurationManager.AppSettings["StartTime"].ToString())
{
//Print Report
}
}
else
{
//Print Report
}
}
private void t2_Elapsed(object sender, ElapsedEventArgs e)
{
if (File.Exists("FileName2"))
{
string CurrentTime2 = DateTime.Now.ToShortDateString();
if (CurrentTime2 == ConfigurationManager.AppSettings["StartTime2"].ToString())
{
//Print Report 2
}
}
else
{
//Print Report 2
}
}
protected override void OnStop()
{
t1.Enabled = false;
t2.Enabled = false;
}
}
Я не могу понять, почему этот первый пропускается. Оба проверит, существует ли файл, и распечатает его, если его нет. При следующем запуске второй отчет будет напечатан в назначенное время, но первый будет пропущен. Кажется, я не могу понять, чего мне не хватает.