关于网站定时执行任务计划以及多线程,该如何处理

关于网站定时执行任务计划以及多线程
怎么用控制台应用程序做一个定时执行多个不同的任务,每隔一定时间就会执行一次
------解决思路----------------------
假如你有20个任务,你还不能写“一个”控制台程序(因为你设计不了),你应该创建20个程序,有公用的部分引用一个公用的工程(编译为DLL)即可。 
------解决思路----------------------
class Program
    {
        public delegate int MyFunDel();
        static void Main(string[] args)
        {
            ThreadPool.QueueUserWorkItem((e) => {
                DateTime time;
                while (true)
                {
                    time = DateTime.Now.ToLocalTime();
                    if (time.ToLongTimeString().Equals("16:08:00"))
                    {
                        new MyFunDel(MyFun).BeginInvoke(new AsyncCallback(MyAsyncCallback), null);
                        Thread.Sleep(500);
                    }
                    if (time.Second == 0)
                    {
                        Console.WriteLine("{0} {1}", time.ToShortDateString(), time.ToShortTimeString());
                        Thread.Sleep(500);
                    }
                    Thread.Sleep(500);
                }
            });
            
            Console.ReadKey();
        }
        static int MyFun()
        {
            Console.WriteLine("服务器开始执行数据库操作.. 线程:{0}", Thread.CurrentThread.ManagedThreadId);
            DateTime time = DateTime.Now;
            Thread.Sleep(5000); //操作数据库
            return (DateTime.Now - time).Seconds;    //返回执行持续时间
        }
        //异步委托回调函数
        static void MyAsyncCallback(IAsyncResult result)
        {
            AsyncResult aResult = (AsyncResult)result; //封装类 通过接口 实现多态 
            MyFunDel addDel = (MyFunDel)aResult.AsyncDelegate; //封装委托
            int num = addDel.EndInvoke(result);  //获取异步操作结果
            string str = string.Format("{0} 操作数据库持续时间:{1}秒  线程:{2}",DateTime.Now.ToLongDateString() + " " + DateTime.Now.ToLongTimeString(), num, Thread.CurrentThread.ManagedThreadId);
            Console.WriteLine(str);
            File.AppendAllText(@"c:/log.txt", str);
        }
    }

用控制台程序实现需要涉及很多因素,比如判断是否被异常终止,是否已完成操作等等。