Использование таймера внутри BackGroundWorker - PullRequest
2 голосов
/ 15 июля 2011

Мое приложение работает с данными в реальном времени.Когда открывается Form, создается BackgroundWorker, который выбирает данные и выполняет обработку.

Теперь я бы хотел, чтобы весь этот цикл выполнялся в 5-секундном цикле , пока Form активен или открыт.т. е. если пользователь открывает form1 и все еще находится на нем в течение 5 секунд, тогда BackgroundWorker выполнит всю выборку и обработку снова.Теперь, если пользователь закрывает form1 и открывает form2, создается новый BackgroundWorker, который выполняет обработку, относящуюся к form2.

Я закончил с частью BackgroundWorker, но могуне решить, как зациклить BackgroundWorker.Должен ли я создать таймер внутри BackgroundWorker, который срабатывает каждые 5 секунд?Или я бросил BackgroundWorker и обошелся только с Таймером?

РЕДАКТИРОВАТЬ: я пошел с BGW внутри Таймера.Таким образом, каждые 5 секунд таймер вызывает BGW, и, если BGW занят, он ожидает его завершения.

1 Ответ

1 голос
/ 15 июля 2011

да, конечно, вы можете сделать это, используя объект таймера, как показано ниже

System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
timer.Interval = 5000;
timer.Start();

private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
    //do the logic..
}
...