У меня проблема с двумя таймерами в службе Windows. Второй таймер TimerLimit никогда не выполняется. Я установил два таймера, потому что мне нужно, чтобы проверить, чтобы разобрать какую-то электронную почту, и мне нужно, чтобы она постоянно работала, а вторая, если что-то происходит после чтения электронных писем. У меня такое впечатление, что они в конфликте. Возможно ли, потому что первый таймер слишком быстр? любое предложение для решения этой проблемы? Спасибо заранееWindows Service speed
protected override void OnStart(string[] args)
{
stop = false;
ParseEmail.DeleteFiles();
timer = new Timer(200);
timer.Elapsed += new ElapsedEventHandler(ExecuteService);
timer.Enabled = true;
timerLimit = new Timer(20000);
timerLimit.Elapsed += new ElapsedEventHandler(ExecuteServiceLimit);
timerLimit.Enabled = true;
}
protected override void OnStop()
{
stop = true;
}
private void ExecuteService(object source, ElapsedEventArgs e)
{
if (stop)
{
return;
}
try
{
if (ParseEmail.isNotUse)
{
ParseEmail.isNotUse = false;
ParseEmail.ParseValues();
}
}
catch (Exception exp)
{
ParseEmail.isNotUse = true;
Console.WriteLine("Exception: {0}", exp.ToString());
}
}
private void ExecuteServiceLimit(object source, ElapsedEventArgs e)
{
if (stop)
{
return;
}
try
{
ParseEmail.CheckLimitOrders();
}
catch (Exception exp)
{
Console.WriteLine("Exception: {0}", exp.ToString());
}
}
}
}
Вам необходимо улучшить регистрацию ошибок. Console.WriteLine() не может работать в службе. Ваш код может умереть за исключение, и вы никогда не узнаете. Например, используйте EventLog. И остановите службу, чтобы не заполнить журнал с тысячами ошибок. –