All of my tasks (which need to be scheduled) for a website are kept
within the website and called from a special page. I then wrote a
simple Windows service which calls this page every so often. Once the
page runs it returns a value. If I know there is more work to be done, I
run the page again, right away, otherwise I run it in a little while.
This has worked really well for me and keeps all my task logic with the
web code. Before writing the simple Windows service, I used Windows
scheduler to call the page every x minutes.
but In a shared host environment you're out of luck for windows services and
executables. Dedicated this isn't a problem... A timer in asp.net
isn't a good solution either unless you can ensure that it is fault
tolerant.If you don't have access to a dedicated server, then your best bet is to
write a small .NET command line utility which calls executes an
HttpWebRequest against your website.
here are two good links for you
hope this will help you