线程实施的顺序 等线程执行完再执行下一个线程

线程执行的顺序 等线程执行完再执行下一个线程

 
        Thread tr = null;
        delegate void Methinvoker();
        private void btSeInfo_Click(object sender, EventArgs e)
        {

            tr = new Thread(new ThreadStart(SeleInfo));
            tr.IsBackground = true;
            //  tr.SetApartmentState(ApartmentState.STA);
            tr.Start();


            Thread tr1 = new Thread(new ThreadStart(StartThreadCaiji));
            tr1.Start();
        }
        private void StartThreadCaiji()
        {
            tr.Join();
            Methinvoker meth = new Methinvoker(MessSeInfo);
            this.BeginInvoke(meth);
        }
        private void MessSeInfo()
        {

            //Monitor.Enter(obj);
            // Monitor.Wait(obj);
            MessageBox.Show("数据采集完成,成功采集记录总数:【" + caiji.ToString() + "】条\n 其中红色讯号灯表示通讯错误,绿色表示提取成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            pbLoad.Value = 0;
            tbpg.Text = "";
            caiji = 0;
            btStopSelect.Enabled = false;
            //   Monitor.Exit(obj);
        }


当然还可以用Monitor来锁 这就不解释了