http://msdn.microsoft.com/zh-cn/library/23f7b1ct.aspxjoin 为 连接/加入 的意思。
MSDN  对Thread.Join() 的解释为:
在继续执行标准的 COM 和 SendMessage 消息泵处理期间,阻塞调用线程直到某个线程终止或经过了指定时间为止。
using System;
using System.Threading;class Test
{
    static TimeSpan waitTime = new TimeSpan(0, 0, 1);    public static void Main() 
    {
        Thread newThread = new Thread(new ThreadStart(Work));
        newThread.Start();        if(newThread.Join(waitTime + waitTime))
        {
            Console.WriteLine("New thread terminated.");
        }
        else
        {
            Console.WriteLine("Join timed out.");
        }
    }    static void Work()
    {
        Thread.Sleep(waitTime);
    }
}

我对Thread.Join()  这个方法实在不好理解,以上面的代码为例,阻塞调用线程是哪个线程?直到某个线程终止  这个线程 又是哪个线程?代码中只有一个线程 newThread 啊?!

解决方案 »

  1.   

    阻塞调用线程就是指的newThread。newThread.Start()之后,调用join的时候,newThead会继续执行委托线程函数。上例中,线程函数sleep1秒,而join是2秒,所以会输出 Console.WriteLine("Join timed out.");
      

  2.   

    写错,join返回true;应该是上面的输出
    Console.WriteLine("New thread terminated.");
      

  3.   

    还有上面的代码段        if(newThread.Join(waitTime + waitTime))
            {
                Console.WriteLine("New thread terminated.");
            }
            else
            {
                Console.WriteLine("Join timed out.");
            }
    如何解释?
    是不是这样理解:
    线程 newThread开始 即newThread.Start()后,在指定的时间段 waitTime + waitTime内,如果 线程newThread终止,则执行 Console.WriteLine("New thread terminated.");反之?
      

  4.   

    你看的是机器翻译的东西,很扯淡的
    Blocks the calling thread until a thread terminates or the specified time elapses, while continuing to perform standard COM and SendMessage pumping.阻塞的是调用Join()这个方法的线程,等待的是Thread对象所附属的线程t.Join();的意思是,阻塞当前线程,直到线程t结束
      

  5.   

    阻塞 应含有 阻止 之意,假如 t.join(); 那又要阻止t 的运行,又要待到t结束
    唉,我头有点晕了。
      

  6.   

    阻止的是当前线程,不是线程t当前线程是指执行t.Join()这条语句的线程,与t没有关系
      

  7.   

    谢谢 Icedmilk;
    我自己UP一下,盼“星星”回复,以确认 一下。
      

  8.   

    通常用法:
    myThread.Abort();
    myThread.Join(0);