Monday, 21 November 2022

AspNet Core Background Task

 public class ScheduledService: IHostedService


{

    private readonly CrontabSchedule _crontabSchedule;

    private DateTime _nextRun;

    private const string Schedule = "0 0 23 * * *"; // run day at 11 pm



    public ScheduledService()

    {

        _crontabSchedule = CrontabSchedule.Parse(Schedule, new CrontabSchedule.ParseOptions{IncludingSeconds = true});

        _nextRun = _crontabSchedule.GetNextOccurrence(DateTime.Now);

    }


    public Task StartAsync(CancellationToken cancellationToken)

    {

        Task.Run(async () =>

        {

            while (!cancellationToken.IsCancellationRequested)

            {

                await Task.Delay(UntilNextExecution(), cancellationToken); // wait until next time


              //execute some task


                _nextRun = _crontabSchedule.GetNextOccurrence(DateTime.Now);

            }

        }, cancellationToken);


        return Task.CompletedTask;

    }


    private int UntilNextExecution() => Math.Max(0, (int)_nextRun.Subtract(DateTime.Now).TotalMilliseconds);


    public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;

}


Cron Expressions refer

https://github.com/atifaziz/NCrontab


What should you required to learn machine learning

  To learn machine learning, you will need to acquire a combination of technical skills and domain knowledge. Here are some of the things yo...