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()?

questionAnswers(7)

yourAnswerToTheQuestion