急!!!多线程调用同一个函数
我有一个线程数组   有8个成员   他们都要访问同一个函数。   我现在希望它们可以按顺序一个一个的调用这个函数   怎么办呢?   是用线程池   还是线程对列呢??有没有代码可供参考呢   谢谢
------解决方案--------------------给你一个 多线程调度例子; 
 摘录:《程序员秘书》--线程--调度线程 
 编程其它很简单,详见:http://www.psec.net.cn 
 1、在 Microsoft Visual Studio .NET 的“文件”菜单上,单击“新建”,然后单击“项目”。  
 2、在“新建项目”对话框中,选择“Visual C#项目”,再选择“Windows 应用程序”模板。  
 3、键入 MutexThreads 作为该程序的名称,然后单击确定。 
 4、在Form1.cs的视图设计器中,添加如下控件: 
 控件类型     控件名称    控件属性      属性值 
 Button       button1      Text          多线程调度演示 
 RichTextBox  richTextBox1  
 5、在Form1.cs的代码设计器中,引用添加如下代码 
 using System.Threading; 
 6、在Form1.cs的视图设计器中,选中button1,在属性框中选中事件,双击Click,在Form1.cs的代码设计器中,添加修改如下代码 
 private void button1_Click(object sender, EventArgs e) 
 { 
     richTextBox1.Text =  " "; 
     button1.Enabled = false; 
     Mutex1 = new Mutex(true);//Mutex对象(一个调度指令) 
     Mutex2 = new Mutex(true); 
     Mutex3 = new Mutex(true); 
     Mutex4 = new Mutex(true); 
     Mutex5 = new Mutex(true); 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "多线程调度例子 ");//主线程暂停时,更新进度信息 
     Thread T1 = new Thread(new ThreadStart(Thread1));//定义4个线程 
     Thread T2 = new Thread(new ThreadStart(Thread2)); 
     Thread T3 = new Thread(new ThreadStart(Thread3)); 
     Thread T4 = new Thread(new ThreadStart(Thread4)); 
     T1.Start();// 使用Mutex.WaitAll()方法等待一个Mutex数组(Mutex4和Mutex5)中的对象全部被释放 
     T2.Start();// 使用Mutex.WaitOne()方法等待Mutex3的释放 
     T3.Start();// 使用Mutex.WaitAny()方法等待一个Mutex数组中任意一个对象被释放 
     T4.Start();// 使用WaitHandle.WaitAll等待所有线程结束 
     Thread.Sleep(10); 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "分五个线程调度指令Mutex1--Mutex5 ");//主线程暂停时,更新进度信息 
     Thread.Sleep(2000); 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "主线程中释放Mutex1 ");//主线程暂停时,更新进度信息 
     Mutex1.ReleaseMutex(); //线程Thread3结束条件满足 
     Thread.Sleep(2000); 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "主线程中释放Mutex3 ");//主线程暂停时,更新进度信息 
     Mutex3.ReleaseMutex(); //线程Thread2结束条件满足 
     Thread.Sleep(2000); 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "主线程中释放Mutex4 ");//主线程暂停时,更新进度信息 
     Mutex4.ReleaseMutex(); 
     Thread.Sleep(2000); 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "主线程中释放Mutex5 ");//主线程暂停时,更新进度信息 
     Mutex5.ReleaseMutex(); //线程Mutex1结束条件满足 
     button1.Enabled = true; 
 } 
 7、在Form1.cs的代码设计器中,添加修改如下代码 
 private static Mutex Mutex1, Mutex2, Mutex3, Mutex4,Mutex5;//创建Mutex对象(调度指令) 
 private static AutoResetEvent Event1 = new AutoResetEvent(false);//线程结束信息灯,未结束false,结束true 
 private static AutoResetEvent Event2 = new AutoResetEvent(false); 
 private static AutoResetEvent Event3 = new AutoResetEvent(false); 
 private AutoResetEvent[] EventS = new AutoResetEvent[] { Event1, Event2, Event3 };//线程组结束信息灯   
 private delegate void ChangeString(string Txt);//这个代理能异步调用设置文本框(可以多参数)   
 public void Thread1() 
 { 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text), new object[] {  "线程Thread1启动,Mutex.WaitAll,等待Mutex4和Mutex5都释放信号 " });//从VS2005开始,给主线程控件附值被认为是不安全的 
     Mutex[] gMs = new Mutex[2]; 
     gMs[0] = Mutex4;//创建一个Mutex数组作为Mutex.WaitAll()方法的参数 
     gMs[1] = Mutex5; 
     Mutex.WaitAll(gMs);//等待Mutex1和Mutex2都被释放 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "线程Thread1结束 ");//从VS2005开始,给主线程控件附值被认为是不安全的 
     Event1.Set(); //线程结束,将Event1设置为有信号状态 
 }   
 public void Thread2() 
 { 
     richTextBox1.Invoke(new ChangeString(SetrichTextBox1Text),  "线程Thread2启动,