Windows with C++: Task Scheduler 2.0

The October 2007 issue of MSDN Magazine is out and features the next article for my Windows with C++ column. In this instalment I introduce the new Task Scheduler API that provides a welcome upgrade to the antiquated scheduling engine found in older versions of Windows (prior to Windows Vista).

Windows with C++: Task Scheduler 2.0


Task Scheduler received a complete overhaul in Windows Vista®. Although there are some similarities, the new Task Scheduler (dubbed Task Scheduler 2.0) is far more powerful than the original, which has been around since Windows® 98. It is no longer just a simple tool for end users, but a powerful platform for designing and managing complex background operations—so much so that it can remove the need for Windows service development in many cases.

Imagine your project needs to check for updates automatically. You might think to write a Windows service that runs in the background and checks for updates every few days. Instead of a service that has to run all the time, you can design a scheduled task that only runs every few days, checks for updates, and then stops. Even better, you can ensure that it runs only when a user is logged in so that resources aren't needlessly consumed when no one is around to perform an update.

It is evident that Microsoft developers consider the new Task Scheduler ready for prime time by the simple fact that it is used by many parts of Windows Vista to manage background tasks. This has the added benefit of reducing the number of new services that would inevitably have been created to handle all those tasks. It also simplifies Windows administration and diagnostics since it is far simpler to interrogate a task to see what it's doing than it is to figure out what a black-box Window service is up to. For tasks that form part of Windows itself, the Task Scheduler also acts as a task host, consolidating many task-specific processes into one and thereby further reducing the resources that are required to host those operations.

In this column I am going to explore the main concepts and building blocks that make up the Task Scheduler so you can get up to speed as quickly as possible and start benefiting from this great new service right away.

Enjoy!

If you’re looking for one of my previous articles here is a complete list of them for you to browse through.

© 2007 Kenny Kerr

2 Comments

  • Hey Kenny,

    Your article on Task Scheduler 2.0 was great and actually perfect timing for me. I only have one problem.

    I still actually program in C and for the most part I've been able to convert any Com Interfaces I needed to C by using lpVtbl.

    As you point out in your article, the ITaskService uses VARIANT type which isn't something I've dealt with before. I don't suppose you've seen any sample C programs that use CComVariant()?

    Thanks,
    Bill

  • Bill: CComVariant is just a C++ wrapper class around the VARIANT structure and the various C functions that manipulate it. These functions are documented here: http://msdn.microsoft.com/en-us/library/ms221673.aspx

Comments have been disabled for this content.