可以弄一个计时器,设定Interval =1000,然后每次触发计时器的时候判断需要执行那些任务,然后开启多线程分别执行各个任务。

解决方案 »

  1.   

    即使任务1是个死循环,CPU也自然会在别的线程的时间片轮到时切换过去的.各个线程干各自该的事就行了,这些细节操作系统帮你搞定的.
      

  2.   

    以前用线程池弄过一个,供参考.
    //======================================================================
    //
    //        Filename : ThreadPool 1.txt
    //        Description : 线程池示例:  等待指定的时间后取值
    //
    //        created by 枫中玫瑰 at  13:51 2010-08-30
    //
    //======================================================================        private void ThreadPool_Click(object sender, EventArgs e)
            {
                int[,] data = new int[,] { { 3000, 1 }, { 4000, 1 }, { 5000, 0 }, { 6000, 1 }, { 7000, 0 } };            for (int i = 0; i < 5; i++)
                {
                    // 开辟线程, 传递数据用结构体封装
                    ThreadPool.QueueUserWorkItem(new WaitCallback(GetValueMethod), new MyData(data[i, 0], data[i, 1]));
                }
            }        /// <summary>
            /// 线程池所执行的方法
            /// </summary>
            /// <param name="ob">传入的数据</param>
            private void GetValueMethod(object ob)
            {
                MyData de = (MyData)ob;
                Thread.Sleep(de.waittime );
                Console.WriteLine("等待" + de.waittime + "后, 取值:" + de.value);
            }        /// <summary>
            /// 数据结构体
            /// </summary>
            struct MyData
            {
                /// <summary>
                /// 等待时间
                /// </summary>
                public int waittime;
                /// <summary>
                /// 取值
                /// </summary>
                public int value;
                /// <summary>
                /// 构造函数
                /// </summary>
                /// <param name="time">时间</param>
                /// <param name="data">数据</param>
                public MyData(int time, int data)
                {
                    waittime = time;
                    value = data;
                }
            }