本帖最后由 fanyp2006 于 2010-04-10 12:18:04 编辑

解决方案 »

  1.   

    Thread[] threads = new Thread[N];for(int i = 0; i < threads.Length; i++){
       threads[i] = new Thread(ThreadStart(ThreadProc));
       threads[i].Start();
       while(!threads[i].IsAlive)){
          Thread.Sleep(1);
    }
    }for(int i = 0; i< threads.Length; i ++){
      
       threads[i].Jion();
    }//
    //可以开始下面的工作了。
    //
      

  2.   


    //以下代码本人亲测可行
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;using System.Threading;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            const int length=10;
            Thread[] ths = new Thread[length];
            ThreadWork[] work = new ThreadWork[length];        int index = 0;        for (index = 0; index < length; index++)
            {
                work[index] = new ThreadWork();
                ths[index] = new Thread(new ParameterizedThreadStart(work[index].DoWork));
                ths[index].Start(index);//这里传递需要传递给线程对象的值
            }
            index = -1;
            while (index++ < length-1)
            {
                if (ths[index].ThreadState != ThreadState.Stopped)
                {
                    //index = 0;
                    Thread.Sleep(10);//线程休息10毫秒
                    continue;
                }
            }        //当执行到这里 说明所有线程都已经执行完毕        //开始收集结果
            object[] result = new object[length];        for (index = 0;index<length;index++)
            {
                result[index] = work[index].GetResult();
            }
        }
        public class ThreadWork
        {
            private object result = null;        public object GetResult()
            {
                return result;
            }        public void DoWork(object args)
            {
                //这里执行操作,并保存结果
                result = args;
            }
        }
    }