跨线程调用控件的问题。。。
额。。新手一个。。
为什么add里面调用button1.Text会报错说不能跨线程调用控件,而调用button1.BackColor却没问题。。。。
求解。。。
private void button1_Click(object sender, EventArgs e)
{
Thread asd = new Thread(new ThreadStart(add));
asd.Start();
}
private void add()
{
button1.Text = "asd";
// button1.BackColor = Color.FromArgb(0, 255, 255);
}
------解决方案--------------------
我也不知道了,试了好几个,发现都没有跨线程错误
button1.Text = "asd";//只有这个出现跨线程错误,以下的均不报错
button1.BackColor = Color.FromArgb(0, 255, 255);
button1.ForeColor = SystemColors.HighlightText ;
button1.UseVisualStyleBackColor = true;
this.button1.TabIndex = 1;
我也很想知道为什么,坐等高人解答
------解决方案--------------------线程里面用就可以
MainForm.Fs( FormBorderStyle.FixedSingle);
------解决方案--------------------可能是还没到触发错误的时候
曾经一大牛和我说过
线程里面操作UI
会引起一些你想不到的问题
当时因为编译通过了
我没把他的话听进去
然后后来就不稳定了。。。
------解决方案--------------------
这个解释有没有官方的 你说的值类型不会引起死锁 但是值类型Color作为字段存放在引用类型Control里 也是按引用存放的