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(); }// //可以开始下面的工作了。 //
//以下代码本人亲测可行 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; } } }
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();
}//
//可以开始下面的工作了。
//
//以下代码本人亲测可行
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;
}
}
}