怎么判断自己的后台线程执行完毕没有?我想在自己开辟的后台线程执行完毕后再让主线程执行。怎么做?

解决方案 »

  1.   

                System.Threading.Thread th=....;
                th.Start();
                while (th.ThreadState == ThreadState.Running)
                {
                    Application.DoEvents();
                }            //接着干
      

  2.   

    一下代码对你有用窗体上就放一个button和一个label,点击button后处理后台数据,然后在label上显示“loading...”,
       数据处理完毕之后label显示“完成”。 private delegate void TestDelegate(string s);        private void button1_Click(object sender, EventArgs e)
            {
                label1.Text = "Loading...";
                Thread thd = new Thread(st);   //st是线线程调用的方法,也就是你处理数据的方法
                thd.Start();
            }        private void st()
            {
                Thread.Sleep(2000); //为了测试,线程停2秒,当然可以在这之前写你处理数据的代码            //因为线程里面不能访问控件,所以用Invoke调用ThreadEndCallback方法
                TestDelegate myDelegate = new TestDelegate(ThreadEndCallback);
                this.Invoke(myDelegate, "Loading完毕!"); 
            }        private void ThreadEndCallback(string str) //线程回调方法
            {
                label1.Text = str;
            }
      

  3.   

    有个 lock方法, 比较好用