关于跨线程调用控件。最后面注释掉的三项和之前一项有什么区别? 为什么最后一项会报错?
private delegate void SetControl(bool set);
private void button3_Click(object sender, EventArgs e)
{
button3.Enabled = false;
thread = new Thread(InvokeControl);
thread.IsBackground = true;
thread.Start();
}
private void button4_Click(object sender, EventArgs e){ }
private void Setbutton(bool set)
{
button4.Enabled = set;
}
private void InvokeControl()
{
if (this.listBox1.InvokeRequired)//等待异步
{
SetControl fc = new SetControl(Setbutton);
button4.Invoke(fc, false);
//BeginInvoke(fc, false);
//this.Invoke(fc, false);
//fc.Invoke(false);
}
}
[最优解释]