Перекрестная операция недопустима в родительском контроле

Я использую следующий код для обновления метки в моем классе, которая расширяется 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 {},

Другие вопросы по тегам