各位: 需求是这样的, 在Main方法里在. 我一次性要开10个线程, 十个线程跑同一个方法, 只是方法传入的参数不同, 等这十个线程都跑完了, 接下来再做Main方法里其他的事情
public void Main()
{
for(int i = 0 ; i<10 ;i++)
{
thread td = new thred(方法名) // 这里开始跑线程,
}
// DoSomeThing() // 一定要等到十个线程跑完了,再接下来处理下面的事.
}
上面这个程序只是一个比喻, 希望大家帮帮我, 当然最好有源码, 因为明天就要交差了.
Code
//设置一个信号量用于同步
static System.Threading.Semaphore sema =
new System.Threading.Semaphore(0, 10);
static void ThreadProc(object state)
{
Console.WriteLine(state);
sema.Release();
}
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
//Run thread
System.Threading.Thread thread =
new System.Threading.Thread(ThreadProc);
thread.Start(i);
}
//Waitting
for (int i = 0; i < 10; i++)
{
sema.WaitOne();
}
Console.WriteLine("All threads done");
}
class Program
{
static int mMaxThread = 10;
static int mCurTheads = 0;
static AutoResetEvent mSet = new AutoResetEvent(false);
static void Main(string[] args)
{
Console.WriteLine("press any key to start threads");
Console.ReadKey();
for (int i = 0; i < 10; i++)
{
Thread tmpThread = new Thread(T);
tmpThread.Start(i);
}
mSet.WaitOne();
Console.WriteLine("ok");
Console.ReadKey();
}
static void T(object v)
{
Thread.Sleep(5000);
mCurTheads++;
Console.WriteLine("thread:"+v);
if (mMaxThread == mCurTheads)
mSet.Set();
}
}