Как запустить метод раз в сутки?

85
08 июля 2021, 19:50

Как сделать чтобы метод Run выполнялся всё время,а метод Run2 раз в сутки. И когда Run2 работает - Run ждёт.

private void OnTimedEvent(Object source, System.Timers.ElapsedEventArgs e)
{
    var date = DateTime.Now;
    if (date.Hour >= 3 && date.Hour < 4 && date.Minute < 10)
    {
        timer.Stop();
        Run2();
        Thread.Sleep(600000); // пауза 10 минут
        timer.Start();
    }
    else
    {
        Run();
    }
}
Answer 1

Делаешь 2 таски

Task Run;
Task RunOncePerDay; //(в конце этой таски анпаузишь Run)
DateTime RunOncePerDayTimeOfRun;

Используешь Timer. Размер таймера ставишь в 1000; В таймер тик засовываешь код вроде:

if (RunOncePerDayTimeOfRun >= DateTime.Now && < DateTime.Now.AddSeconds(1))
{
   Run.Pause();
   RunOncePerDay.Run();
} 
if(RunOncePerDay.Status != TaskStatus.Runned && Run.Status = TaskStatus.Finished)
{
    Run.Start();
}

Уверен что в коде я налажал с использованием синтаксиса т.к. писал от понта не помня нифига. Но исправив ошибки синтаксиса и оставив даную логику -- код должен работать.

Так же можно использовать внешние библиотеки заточенные под эти нужды. Кажется была какая-то библиотека вроде Cron или Quartz или как-то так. Возможно использовать внешний нюгет будет проще и лучше.

READ ALSO
Как работать с базой данных в android?

Как работать с базой данных в android?

Мне привычно работать с СУБД MS SQL Server и просматривать, создавать там таблицы, БД, связиНачал знакомиться с мобильной разработкой, в проектах...

83
Виснет форма при GET запросе

Виснет форма при GET запросе

Подскажите человеку, не очень разбирающемуся в запросахУ меня есть несколько, подобных этим, запросов

95
Аналоги SPA на wasm

Аналоги SPA на wasm

Есть ли аналоги Blazor (фреймворки для создания SPA приложений на WebAssembly)?

76