日期:2014-05-17  浏览次数:20852 次

如何判断线程已经结束
假定现在有一个循环,里面开启了10个线程。
循环里面包含如下两行代码:

Thred t = new Thread(Run);
t.Start();

怎么判断这10个线程都跑完了,其中的资源都释放完毕了?

------解决方案--------------------
引用:
引用:
再定义一个AutoEvent[10]的数组
给Run方法的最后加上
AutoEvent[x].Set();

Thred t = new Thread(Run);
t.Start();

在Start的后边加个WaitHandler.All(AutoEvent)

那代码应该大致是下面这样了:


C# code
?



……


要改一下,对于线程你要选有参传入,或无参你自己看着吧,都一样



 private static AutoResetEvent[] autoEvents = new AutoResetEvent[10];

        public static void Run()
        {
            int index = int.Parse(Thread.CurrentThread.Name);
            Console.WriteLine(string.Format("当前时间{0},当前线程{1}", DateTime.Now, index));
            autoEvents[index].Set();  <---这里
        }

        static void Main(string[] args)
        {

            for (int i = 0; i < 10; i++)
            {
                autoEvents[i] = new AutoResetEvent(false);
                Thread t = new Thread(new ThreadStart(Run));
                t.Name = i.ToString();
                t.Start();
            }
            WaitHandle.WaitAll(autoEvents); <---这里
            Console.WriteLine("所有线程都结束完毕");
            Console.ReadKey();
}