Я пытаюсь завершить свое назначение в колледже, которое просит создать событие, управляемое временем. Отчет должен автоматически отправляться по электронной почте ответственному лицу два раза в день. Мне нужно получить время из базы данных, что я могу сделать довольно легко. В настоящее время, я создал таймер, как это:Событие, связанное с C#
private static void getDate()
{
DateTime now = DateTime.Now;
DateTime alarm = new DateTime(2015, 10, 27, 19, 23, 0);
TimeSpan diff = alarm - now;
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
// Set the Interval to the difference in time from now to your alarm.
if (diff.TotalMilliseconds > 0)
{
aTimer.Interval = diff.TotalMilliseconds;
aTimer.Enabled = true;
}
else
{
aTimer.Enabled = false;
aTimer.AutoReset = true;
aTimer.Dispose();
}
}
Когда форма инициализирована, функция GetDate() выполняется для запуска таймера. Когда таймер попадает в определенное время, я запускаю этот код:
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine("Hello World!");
XslCompiledTransform transformer = new XslCompiledTransform();
transformer.Load("report.xsl");
transformer.Transform("Report.xml", "Report.html");
string html = File.ReadAllText("Report.html");
SendMail(html);
}
После того, как электронная почта направляется лицу, я запустить функцию GetDate() для обновления времени. Однако таймер не останавливается. По умолчанию используется интервал 100.00 и выполняется выполнение OnTimedEvent(). Я не уверен, какие изменения я должен внести. Таким образом, в основном таймер должен работать два раза в день. Когда отчет отправляется оба раза, он должен быть установлен по умолчанию до самого раннего времени на следующий день (если это имеет смысл).
Благодарим за любые предложения.
'Тем не менее, таймер, похоже, не останавливается. Возможно, вам следует отключить его, как только он будет запущен? 'aTimer.Enabled = false'. –
поместите счетчик в OnTimedEvent и когда его 2 остановите таймер. –
Печально, что они учат вас использовать таймер для тайм-события, когда планировщик, такой как Windows Scheduler, будет более уместен в реальном мире. –