Member 13688117 Ответов: 2

Использование таймера для вызова нескольких функций


Привет, я хочу использовать таймер в windows forms.Я должен быть таким, чтобы у меня было 4 функции, которые нужно вызвать с разницей в 5 секунд.через 5 секунд после выполнения функции 1() она должна выполнить функцию 2() и т. д.Я работаю с C#.Как я могу это сделать?Любая помощь будет оценена по достоинству.

Что я уже пробовал:

Я пробовал для одного вызова функции в таймере.

George Swan

Ваши методы возвращают пустоту?

Member 13688117

да

2 Ответов

Рейтинг:
9

George Swan

Если вам нужно убедиться, что существует пятисекундная задержка после завершения каждого метода, а не просто последовательно запускать методы, вызывая метод каждые 5 секунд, вы можете использовать асинхронный шаблон на основе задач В этом примере функции вызываются в ответ на нажатие кнопки. Функции будут выполняться в потоке пользовательского интерфейса, но 5-секундная задержка будет асинхронной задержкой и не будет блокировать поток пользовательского интерфейса.


private async void BtnRun_Click(object sender, EventArgs e)
        {
             function1();
            await Task.Delay(5000);
            function2();
            await Task.Delay(5000);
            function3();
            await Task.Delay(5000);
            function4();
        }

Если функции все Actions вы можете изменить способ, с помощью List<Action>


Member 13688117

Большое вам спасибо, очень меткий ответ.

Рейтинг:
15

OriginalGriff

Создайте целочисленную переменную уровня класса Call callNext.
Затем в события Tick таймера :

switch(callNext++)
   {
   case 0: Method0(); break;
   case 1: Method1(); break;
   case 2: Method2(); break;
   case 3: Method3(); break;
   }
if (callNext > 3) callNext = 0;
Чтобы сделать его более ясным, вы могли бы использовать enum вместо целого числа.


Member 13688117

Спасибо.Это работает.

OriginalGriff

Всегда пожалуйста!