What I found is that instead of the timer executing the method I specified every x seconds (as defined in the web.config) it continuously fired away ever second which put a lot of stress onto the server.

After digging around I came across this relatively simple method to run background tasks using the cache and reacting on the CacheItemRemoved event.

In a nutshell you basically add a cache item to your application with a specific expiration date/time, wait until that cache is removed by ASP.net and then do something at that point.

The nice thing about it is that you can give your cache item specific names and so implement multiple tasks like so

Important:
ASP.net checks the cache only every 20 seconds so always use a multiple of 20 for your intervals. Anything in-between will only trigger within the next 20 seconds. So this won’t work if you need intervals with high execution rates (5 or 10 seconds)