线程执行的顺序 等线程执行完再执行下一个线程
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); }