O que há de errado com minha chamada de thread cruzado no Windows Forms?
Encontro um problema com um aplicativo Windows Forms.
Um formulário deve ser exibido a partir de outro segmento. Portanto, na classe form, eu tenho o seguinte código:
private delegate void DisplayDialogCallback();
public void DisplayDialog()
{
if (this.InvokeRequired)
{
this.Invoke(new DisplayDialogCallback(DisplayDialog));
}
else
{
this.ShowDialog();
}
}
Agora, toda vez que eu corro isso, umInvalidOperationException
é jogado na linhathis.ShowDialog();
:
"Operação de encadeamento inválida: controle 'SampleForm' acessado de um encadeamento diferente daquele em que foi criado."
O que há de errado com esse pedaço de código? Não é uma maneira válida de fazer chamadas entre threads? Existe algo especial comShowDialog()
?