使用“控制”是好主意吗?CheckForIllegalCrossThreadCalls = false
本文关键字:CheckForIllegalCrossThreadCalls false 好主意 控制 使用 | 更新日期: 2023-09-27 18:05:03
我有一个从serialport接收数据的类。我使用action<T> delegate
传递数据到表单,它显示在一个文本框中。问题是我不能访问textbox
控制,因为它说:Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on
.
所以我设置了Control.CheckForIllegalCrossThreadCalls = false
,并且它正在工作。
这样做好吗?或者有更好的方法。
谢谢
虽然它看起来大多数时候都是有效的,但它肯定会时不时地失败。
如果你需要从另一个线程访问/修改UI控件,使用control . invoke .
这样做不是个好主意。
我相信首选的方法是检查是否控制。invokerequrequired == true,如果是,则使用Control。使用适当的委托调用,该委托将把方法调用编组到UI线程上。
你会在下面写些什么吗
try
{
Object obj=null;
var result = obj.ToString();
}
catch (Exception )
{
}
我相信你的答案会是否,类似的事情与控制。CheckForIllegalCrossThreadCalls = false,它只会吃异常,但会给你估计的客户端呈现未知的结果