Я новичок в C#, и мне нужно было использовать таймер для небольшого приложения, которое я использую для мониторинга части оборудования. Я нашел код для таймера, но использует DoEvents(). Поскольку я запускаю таймер в течение длительного времени, иногда дней и часов, я начал получать переполнение стека. Теперь я понимаю, что DoEvents() вызывает это, и это то, что большинство людей рекомендует использовать. Какую функцию вы бы рекомендовали использовать вместо DoEvents вместо настройки таймера?Timer - альтернативная реализация DoEvents
Мой код:
private void BeginMonitoringClick() {
{
myTimer.Tick += new EventHandler(TimerEventProcessor); // myTimer declared elsewhere
myTimer.Interval = 2000;
myTimer.Start();
while(!exitFlag)
{
Application.DoEvents();
}
}
private void TimerEventProcessor(Object myObject, EventArgs myEventArgs){
// Talk to hardware, see if it is doing OK
}
Это консольное приложение, и вам просто интересно, как предотвратить его выход? –
Вы можете просто вернуться из 'BeginMonitoringClick()' и таймер должен продолжать работать! (Предполагаю, что у вас есть приложение Windows Forms или WPF) –
@WillEddins, нет, это приложение на основе Windows Forms на основе графического интерфейса. Функция BeginMonitoringClick() на самом деле является обработчиком кнопки, которую я имею в GUI –