请问各位大虾:
1.能不能线程中又包含有线程?
例如:一个按钮事件中执行这样一个线程:{Thread Thread1 = new Thread(new ThreadStart(get));
     Thread1.Start();}
get方法中又有线程在执行:
     public void get()
     {         
                Thread Thread2 = null;new Thread(new ThreadStart(getData));
                try
                {
                    Thread2 =new Thread(new ThreadStart(getData));
                    Thread2.Start();
                    if (sInfo != string.Empty)
                    {
                            Thread Thread3 = new Thread(new ThreadStart(sendInfo));
                            Thread3 .Start();                        
                    }
                }
                catch
                {
                    if (thisThread.IsAlive)
                    {
                        thisThread.Abort();
                    }
                }
        }
2.在执行线程Thread1的时候我想让线程Thread2执行结束了才开始执行线程Thread3,请问各位大虾,我应该怎么做?

解决方案 »

  1.   

    用backgroudworker控件,开新线程。同时线程完成过后有个事件的通知主线程的。
      

  2.   

    2.在线程一中写一个while循环,当线程2结束时跳出,然后执行线程3最好看看线程池,对你的线程管理一下。这么多线程,很容易挂掉的
      

  3.   

    谢谢:yuwenge 
    线程池,还真没有接触过
    其他高手也给小弟点解决方法吧
      

  4.   

     public   void   get() 
              {                   
                                    Thread   Thread2   =   null;new   Thread(new   ThreadStart(getData)); 
                                    try 
                                    { 
                                            Thread2   =new   Thread(new   ThreadStart(getData)); 
                                            Thread2.Start(); 
    Thread2.Join();                                        if   (sInfo   !=   string.Empty) 
                                            { 
                                                            Thread   Thread3   =   new   Thread(new   ThreadStart(sendInfo)); 
                                                            Thread3   .Start();                                                 
                                            } 
                                    } 
                                    catch 
                                    { 
                                            if   (thisThread.IsAlive) 
                                            { 
                                                    thisThread.Abort(); 
                                            } 
                                    } 
                    } 
      

  5.   

    Thread thread1 调用方法
    Get()
    {
        Thread thread2 = new ...;
        thread2.Start();
        thread2.Join();   //等待线程结束
        Thread thread3 = new ...;
        thread3.Start();
        
    }
      

  6.   

    加个Thread2.Start()后面再加个Thread2.Join()就可以了
      

  7.   

    1.可以
    2.(1)如楼上的用join
      (2)写回调方法,当线程2结束时回调,回调方法里则是开始线程3
      

  8.   

    定义一个全局变量int i=0;执行完getData()后改变其值为1,Thread2.Start();   改为if(i==1)Thread2.Start()