Have you considered setting up a System.Threading.Timer during the
Application_Start method in global.ascx? There are some examples out
there on how to do this if you look around, just be aware that if the
IIS is configured to shut down applications after a period of
inactivity - the thread shuts down also.