Что не так с моим многопоточным вызовом в 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()
?