Что не так с моим многопоточным вызовом в Windows Forms?

Я столкнулся с проблемой в приложении Windows Forms.

Форма должна отображаться из другого потока. Итак, в классе формы у меня есть следующий код:

private delegate void DisplayDialogCallback();

public void DisplayDialog()
{
    if (this.InvokeRequired)
    {
        this.Invoke(new DisplayDialogCallback(DisplayDialog));
    }
    else
    {
        this.ShowDialog();
    }
}

Теперь, каждый раз, когда я запускаю это,InvalidOperationException брошен на линиюthis.ShowDialog();:

«Операция с несколькими потоками недопустима: элемент управления« SampleForm »доступен из потока, отличного от потока, в котором он был создан».

Что не так с этим куском кода? Разве это не правильный способ совершать вызовы между потоками? Есть ли что-то особенное сShowDialog()?

Ответы на вопрос(7)

Ваш ответ на вопрос