繁体   English   中英

UserControl引发异常“跨线程操作无效”

[英]UserControl throwing exception “Cross-thread operation not valid”

我有一个usercontrol和两个我想将class1的结果打印到usercontrol中的类。我正在使用此行从class发送结果

((merge.MyControl)(MyControlInstance)).CLIDisplay = e.WorkItem.CustomerId;

我显示结果的控件属性是

public string CLIDisplay
        {
            get { return lblResultCLI.Text; }
            set
            {
                    lblResultCLI.Text = value;

            }
        }

但是我在c#表单中调用类时遇到了Exception

An exception of type 'System.InvalidOperationException' occurred in System.Windows.Forms.dll but was not handled in user code

Additional information: Cross-thread operation not valid: Control 'tbxEvents' accessed from a thread other than the thread it was created on.

您将必须使用invoke

this.Invoke((MethodInvoker) delegate
{
   lblResultCLI.Text = value;
});

下次请确保您使用Google ...

跨线程操作无效:从创建该线程的线程以外的线程访问控件

发生此错误的原因是lblResultCLI是在运行代码的线程上创建的,而不是在另一个线程上创建的,这就是为什么必须使用Invoke,以便访问lblResultCLI控件的代码在创建该线程的同一线程上执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM