Подтвердить что ты не робот

Вызов метода каждые x минут

Я хочу называть какой-то метод каждые 5 минут. Как я могу это сделать?

public class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("*** calling MyMethod *** ");
        Console.ReadLine();
    }

    private MyMethod()
    {
        Console.WriteLine("*** Method is executed at {0} ***", DateTime.Now);
        Console.ReadLine();
    }
}
4b9b3361

Ответ 1

var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromMinutes(5);

var timer = new System.Threading.Timer((e) =>
{
    MyMethod();   
}, null, startTimeSpan, periodTimeSpan);

Ответ 2

Я основывался на этом ответе @asawyer. Кажется, у него не получается ошибка компиляции, но некоторые из нас это делают. Вот версия, которую примет компилятор С# в Visual Studio 2010.

var timer = new System.Threading.Timer(
    e => MyMethod(),  
    null, 
    TimeSpan.Zero, 
    TimeSpan.FromMinutes(5));

Ответ 4

while (true)
{
    Thread.Sleep(60 * 5 * 1000);
    Console.WriteLine("*** calling MyMethod *** ");
    MyMethod();
}

Ответ 5

Запустите таймер в конструкторе вашего класса. Интервал составляет миллисекунды, поэтому 5 * 60 секунд = 300 секунд = 300000 миллисекунд.

static void Main(string[] args)
{
    System.Timers.Timer timer = new System.Timers.Timer();
    timer.Interval = 300000;
    timer.Elapsed += timer_Elapsed;
    timer.Start();
}

Затем вызовите GetData() в событии timer_Elapsed следующим образом:

static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    //YourCode
}

Ответ 6

Пример использования таймера

using system.timers;

static void Main(string[] args)()
{
    Timer t = new Timer(TimeSpan.FromMinutes(5).TotalMilliseconds); // set the time (5 min in this case)
    t.AutoReset = true;
    t.Elapsed += new System.Timers.ElapsedEventHandler(your_method);
    t.Start();
}
// this method calls every 5 min
private void your_method(object sender, ElapsedEventArgs e)
{
    Console.WriteLine("..."); 
}

Ответ 7

Я загрузил пакет Nuget, который может сделать его настолько простым, вы можете получить его здесь CrystalJobScheduler

И вот, как начать использовать его

using CrystalJobScheduler;

var jobScheduler = new JobScheduler(TimeSpan.FromMinutes(8), new Action(() => {
  //What you want to execute
}));

jobScheduler.Start(); // To Start up the Scheduler

jobScheduler.Stop(); // To Stop Scheduler from Running.