首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么判断线程已经结束

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

如何判断线程已经结束
假定现在有一个循环,里面开启了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();
}

热点排行