xiezunxu

原因:默认情况下,C#不允许在一个线程中直接操作另一个线程中的控件,这是因为访问Windows窗体控件本质上不是线程安全的。如果有两个或多个线程同时操作某一控件的状态,则可能会迫使该控件进入一种不一致的状态,还可能会出现其他与线程相关的Bug,以及不同线程争用控件引起的死锁问题。因此确保以线程安全方式访问控件非常重要。

解决办法1:窗体启动的时候取消跨线程检查。这种方法是不科学的,不推荐。       

1 //取消跨线程检查。
2  Control.CheckForIllegalCrossThreadCalls = false;

解决方法2:用委托的方式。

1 this.Invoke((MethodInvoker)delegate
2 {
3     richTextBox1.AppendText("要追加的内容");
4 });

End。  

分类:

技术点:

相关文章:

  • 2022-01-08
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-28
  • 2021-11-28
  • 2021-11-28
  • 2021-11-28
  • 2021-11-28
  • 2022-02-10
相关资源
相似解决方案