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

本文关键字:控件 无效 线程 操作 | 更新日期: 2023-09-27 18:12:13

我正在使用以下代码更新类中的一个标签,该标签扩展了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。有什么想法吗?谢谢

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

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