paralleles
paralleles

Reputation: 1

Launch a program every 12 hours

I want to launch a method in a program every 12 hours.

What do I have to do ?

Do I have to use a Timer to doing this ?

I have this code :

aTimer = new System.Timers.Timer(1000); //One second, (use less to add precision, use more to consume less processor time
int lastHour = DateTime.Now.Hour;
aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
aTimer.Start();
private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    if(lastHour < DateTime.Now.Hour || (lastHour == 23 && DateTime.Now.Hour == 0))
     {
           lastHour = DateTime.Now.Hour;
           YourImportantMethod(); // Call The method with your important staff..
     }

}

Can I adapt it to launch my program every 12 hours ?

Upvotes: 0

Views: 783

Answers (3)

Wajid
Wajid

Reputation: 593

You can use Cron Jobs for this situation

Here is url check and implement. In corn job you can set when your program run

Upvotes: 0

NajiMakhoul
NajiMakhoul

Reputation: 1717

Use System.Threading.Timer

var start = TimeSpan.Zero;
var period = TimeSpan.FromHours(12);

var timer = new System.Threading.Timer((e) =>
{
    YourImportantMethod();   
}, null, start, period);

Upvotes: 1

Udi Y
Udi Y

Reputation: 288

A simple solution with async/await:

    private static async void RepeatedAction()
    {
        TimeSpan delay = TimeSpan.FromHours(12);

        while (true)
        {
            await Task.Delay(delay);
            YourImportantMethod();
        }
    }

Upvotes: 1

Related Questions