Перекрестная операция недопустима в родительском контроле
Я использую следующий код для обновления метки в моем классе, которая расширяется 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";
}
Проблема заключается в том, что когда код доходит до установки текста метки, пользовательский интерфейс обновляется, однако я получаю исключение InvalidOperationException на панели, которая является родителем метки. Есть идеи почему? Благодарю.
1 ответ
Решение
label1.Text = signedIn ? "Sign Out" : "Sign In";
выполняется, даже если вы находитесь не в том потоке. Вы должны приложить его с else {}
,