线程实施的顺序 等线程执行完再执行下一个线程
线程执行的顺序 等线程执行完再执行下一个线程
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来锁 这就不解释了