跨线程操作在父控件中无效

Jur*_*eri 0 c# user-interface invalidoperationexception winforms

我使用以下代码更新我的类中的标签,该标签扩展UserControl:

private delegate void LabelChanger(bool signedIn);

public bool SignedIn
{
    get { return _signedIn; }
    set
    {
        _signedIn = value;
        labelChanger(value);
    }
}

private void labelChanger(bool signedIn)
{
    if (label1.InvokeRequired)
    {
        BeginInvoke(new LabelChanger(labelChanger), signedIn);
    }
    label1.Text = signedIn ? "Sign Out" : "Sign In";
}
Run Code Online (Sandbox Code Playgroud)

问题是,当代码设置标签文本时,UI会更新,但是我在面板上得到一个"InvalidOperationException",它是标签的父级.有什么想法吗?谢谢.

Dir*_*irk 5

label1.Text = signedIn ? "Sign Out" : "Sign In";当你在错误的线程是即使执行.你应该把它括起来else {}.