views:

373

answers:

2

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

+2  A: 

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

nandos
This is probably the best way to do this.
Stefan Kendall
+1  A: 

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.

Michael Meadows
thank's, but this sample code dont work
Gold
What doesn't work about it? I tested it before I posted it. Just put a Console.WriteLine in methodThatExecutesEveryTenMinutes and change FromMinutes(10) to FromSeconds(5) to verify. It will print to the console every five seconds.
Michael Meadows