跨线程操作在父控件中无效
本文关键字:控件 无效 线程 操作 | 更新日期: 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 {}
。