自己学习C#-Invoke和BeginInvoke的区别
1.认识
1.Control.Invoke()调用时,会阻止当前主线程的运行,等到Invoke()方法返回才继续执行后面的代码,是同步。
2.Control.BeginInvoke()调用时,当前线程会启用线程池中的某个线程去执行这个方法,BeginInvoke不会阻止当前主线程的运行,而是等当前主线程做完事情之后再执行BeginInvoke中的代码内容,表现出“异步”的概念。
代码
private void button1_Click(object sender, EventArgs e)
{
this.textBox_rec.Text = “a”;
this.Invoke(new EventHandler(delegate { this.textBox_rec.Text += “b”; })
);
this.textBox_rec.Text += “c”;
}
输出:abc
private void button2_Click(object sender, EventArgs e)
{
this.textBox_rec.Text = “a”;
this.BeginInvoke(new EventHandler(delegate { this.textBox_rec.Text += “b”; })
);
this.textBox_rec.Text += “c”;
}
输出:acb