Gold
Gold

Reputation: 62554

How can I use a timer in my console application?

How can I use a timer in my console application? I want my console application to work in the background and to do something every 10 minutes, for example.

How can I do this?

Thanks

Upvotes: 1

Views: 10880

Answers (2)

Michael Meadows
Michael Meadows

Reputation: 28426

Console applications aren't necessarily meant to be long-running. That being said, you can do it. To ensure that the console doesn't just exit, you have to have the console loop on Console.ReadLine to wait for some exit string like "quit."

To execute your code every 10 minutes, call System.Threading.Timer and point it to your execution method with a 10 minute interval.

public static void Main(string[] args)
{
    using (new Timer(methodThatExecutesEveryTenMinutes, null, TimeSpan.FromMinutes(10), TimeSpan.FromMinutes(10)))
    {
        while (true)
        {
            if (Console.ReadLine() == "quit")
            {
                break;
            }
        }
    }
}

private static void methodThatExecutesEveryTenMinutes(object state)
{
    // some code that runs every ten minutes
}

EDIT

I like Boj's comment to your question, though. If you really need a long-running application, consider the overhead of making it a Windows Service. There's some development overhead, but you get a much more stable platform on which to run your code.

Upvotes: 4

nandos
nandos

Reputation: 1217

You can just use the Windows Task Scheduler to run your console application every 10 minutes.

Upvotes: 2

Related Questions