Таймер: с 19.00 до 20.00 с периодом в 5 минут открывать новую форму - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Проблема следующая: Необходимо в определенный период времени , скажем с 19.00 до 20.00 с периодами в 5 минут открывать новую форму с каким либо содержимым. Объявил форму
  Form2 Window;
Создал два таймера
//Таймер
System.Timers.Timer timeSearch = new System.Timers.Timer();
//Таймер2 для отчета интервала
System.Timers.Timer timeInterval = new System.Timers.Timer();
При инициализации формы (Form1) запускаю первый таймер
//Таймер активируем и событие привязываем
timeSearch.Start();
timeSearch.Elapsed += new System.Timers.ElapsedEventHandler(this.Interval);
 
 private void Interval(object sender, System.Timers.ElapsedEventArgs e)
        {
                    if ((item.StartDate <= DateTime.Now) && (item.EndDate >= DateTime.Now))
                    {
                        bool count = false;
                        foreach (Form form in Application.OpenForms)
                        {
                            if (form.Name=="Form2")
                            {
                                count = true;
                            }
                        }
                        if (!count)
                        {
                            timeInterval.Start();
                            //timeInterval.Interval = item._notifiInterval;
                            timeInterval.Interval = 10000;
                            timeInterval.Elapsed += new System.Timers.ElapsedEventHandler(this.Messege);
                        }
                    }
        }
private void Messege(object sender, System.Timers.ElapsedEventArgs e)
        {
                Window = new Form2(calendar1, item, locationPlay);
                Window.ShowDialog();
                if (item._notifiYesNo == false)
                {
                    timeInterval.Stop();
                }
        }
Проблемы две Во - первых, иногда вообще не работает, но если начинаешь отладку то в принципе все работает по коду бегает и прыгает на метод Messege. Во - вторых, форма Form2 выходит многократно То что написано 5 минут а в коде 10сек не обращайте внимания. Помогите кто чем может.
private void Messege(object sender, System.Timers.ElapsedEventArgs e)
        {
            bool count = false;
            foreach (Form form in Application.OpenForms)
            {
                if (form.Name=="Form2")
                {
                    count = true;
                }
            }
            if (!count)
            {
                Window = new Form2(calendar1, item, locationPlay);
                Window.ShowDialog();
                if (item._notifiYesNo == false)
                {
                    timeInterval.Stop();
                }
            }
        }
Сделал так теперь в первый раз выходит два окна далее по одному. Т.е. как только наступило 19.00 через 10 сек выходит две формы одинаковые (Form2). После их закрытия по истечению 10 сек по одному
Будут вопросы по коду поясню)

Решение задачи: «Таймер: с 19.00 до 20.00 с периодом в 5 минут открывать новую форму»

textual
Листинг программы
 private void Messege(object sender, System.Timers.ElapsedEventArgs e)
        {
                timeInterval.Stop();
                CalendarItem item = Buffer.notifiItem;
                Window = new Form2(calendar1, item, locationPlay);
                Window.ShowDialog();
                timeInterval.Start();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5