1

我有一个用户控件和两个类我想将我的类 1 的结果打印到用户控件中。我正在使用这一行从类中发送结果

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

我显示结果的控制属性是

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

            }
        }

但是当我向我的 c# 表单调用一个类时,我得到了以下异常

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.
4

1 回答 1

8

您将不得不使用调用

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

下次请确保您使用谷歌...

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

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

于 2012-05-11T09:14:58.163 回答