В моем приложении на C# я создаю новую форму в своем приложении, которая имеет свой собственный объект System.Forms.Timer. В первый раз, когда я создаю форму, все работает нормально, я получаю таймеры, никаких проблем. При определенном условии я должен убить форму и создать новый (такой же) объект формы. Форма создается аналогичным образом. Форма загружена правильно, таймер инициализирован правильно, но таймер не отмечает. Я пробовал разные подходы, такие как остановка и удаление объекта таймера и создание нового в FormLoad, но тщетно. Мой друг предположил, что, возможно, мой новый объект формы не получает сообщений таймера Windows (WM_TIMER). Как проверить, работает ли цикл сообщений в моем новом объекте формы? Что я делаю неправильно?Почему оконные таймеры перестали работать?
Короче говоря, воссоздание объекта формы отключает таймеры. Пожалуйста, порекомендуйте.
Код Пояснения и распространения. Я постараюсь разместить столько, сколько смогу.
Код для создания новой формы объект
Form f = ReflectUtils.CreateClassFromAssembly(_TheAssembly, FormName) as Form;
if (null == f)
{
throw new ApplicationException("Failed to create Form: {");
}
_GUICancelEventHandler = new CancelEventHandler(GUIControlForm_Cancel);
f.Closing += _GUICancelEventHandler;
f.Show();
код для уничтожения образуют
f.Close();
f.Dispose();
Приложение использует тот же код для создания новых объектов формы.
код конструктора для таймера
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.timer1.Interval = 500;
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
внутри formLoad события
timer1.Start();
Надеется, что это помогает.
Пожалуйста, покажите код, который у вас есть. – DonBoitnott
Я добавил код. Из-за его реализации я не уверен, насколько это будет полезно. Наверное, я просто пытаюсь понять общее поведение таймеров окон, если есть что-то очевидное, что я пропускаю. – Alok