使用“控制”是好主意吗?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,并且它正在工作。

这样做好吗?或者有更好的方法。

谢谢

使用“控制”是好主意吗?CheckForIllegalCrossThreadCalls = false

虽然它看起来大多数时候都是有效的,但它肯定会时不时地失败。

如果你需要从另一个线程访问/修改UI控件,使用control . invoke .

这样做不是个好主意。

我相信首选的方法是检查是否控制。invokerequrequired == true,如果是,则使用Control。使用适当的委托调用,该委托将把方法调用编组到UI线程上。

你会在下面写些什么吗

       try
        {
            Object obj=null;
            var result = obj.ToString();
        }
        catch (Exception )
        {

        }

我相信你的答案会是,类似的事情与控制。CheckForIllegalCrossThreadCalls = false,它只会吃异常,但会给你估计的客户端呈现未知的结果

相关文章:
  • 没有找到相关文章