0

我正在使用以下代码来更新我的类中扩展的标签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";
}

问题是,当代码开始设置标签文本时,UI 会更新,但是我在作为标签父级的面板上得到一个 `InvalidOperationException。任何想法为什么?谢谢。

4

1 回答 1

5

label1.Text = signedIn ? "Sign Out" : "Sign In";即使您在错误的线程中也会执行。您应该用else {}.

于 2013-05-03T14:40:17.030 回答