Member 13498963 Ответов: 3

Мне нужно выполнять метод каждые 5 секунд. Как это сделать с концепцией таймера?


Мне нужно выполнять метод каждые 5 секунд. Как это сделать с концепцией таймера?

Мне нужно знать, работает ли таймер и попадает ли он в метод каждые 5 секунд. Поэтому я попробовал следующий код.

int autoPollingTime = конвертировать.ToInt32(configparams["AutoPollQueues"]);
Система.Таймеры.Таймер timer = новая система.Таймеры.Таймер();
таймер.Interval = autoPollingTime; // время в миллисекундах
if (autoPollingTime != 0)
{
таймер.Начать();
если (таймер.Интервал == autoPollingTime)
{
Проверять();
Приставка.WriteLine("таймер завершен");
Нить.Сон(5000);
}
еще
{
вернуть;
}
}

Во время отладки кода я должен был получать консольное сообщение каждые 5 секунд. Но я ничего не понимаю. Я не знаю, в чем проблема.

Пожалуйста, Помогите.

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

Погуглил, но не получил точного решения этой проблемы

3 Ответов

Рейтинг:
21

OriginalGriff

Не используйте нитки.Sleep - это предотвращает отображение чего-либо в потоке пользовательского интерфейса.
И интервал не меняется по мере работы таймера - это количество тиков между последовательными "активациями"таймера.

То, что вам нужно сделать, это справиться с таймером.Истекшее событие, чтобы узнать, когда таймер "выстрелил":

void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
    Console.WriteLine("Timer elapsed");
    }

private void MyButton_Click(object sender, EventArgs ew)
    {
    System.Timers.Timer timer = new System.Timers.Timer();
    timer.Interval = 5000;
    timer.Elapsed += timer_Elapsed;
    timer.Start();
    }


Maciej Los

5ed!

Рейтинг:
20

Karthik_Mahalingam

Вам придется использовать Таймер.Прошедшее Событие [^]
Класс Таймера (System.Таймеры)[^]
обратитесь к этому примеру

using System;

namespace CPTemp
{
   public class Class1
    {
       static void Main(string[] args)
       {
           int autoPollingTime = 1000; //Convert.ToInt32(configparams["AutoPollQueues"]);
           System.Timers.Timer timer = new System.Timers.Timer();
           timer.Interval = autoPollingTime;  
           if (autoPollingTime != 0)
           {
               
               timer.Elapsed += timer_Elapsed;
               Console.WriteLine("Timer started...");
               timer.Start();
               Console.ForegroundColor = ConsoleColor.Red;
               Console.WriteLine("Press any key to stop the timer");
               
               Console.ReadKey();
               timer.Stop();
               Console.WriteLine("\n Timer Stopped");
               Console.ReadKey();
           }
       }

       static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
       {
            Check(); 
       }

       private static void Check()
       {
           Console.ForegroundColor = ConsoleColor.White;
           Console.WriteLine("Timer running...");
       }
    }
}


Maciej Los

5ed!

Karthik_Mahalingam

Спасибо Мацей

Рейтинг:
1

Member 10258730

// вы можете использовать TimerCallback

Timer timer;
        public void CallFirstTime()
        {        
         
            TimerCallback tmCallback = your_method_name_to_call_for_every_5_second_like(interval_method);
            timer = new Timer(tmCallback, "any parameter", 0, 5000);
        }
 private void interval_method(object _SessionID)
        {
// this method call every 5 second
}