¿Qué tiene de malo mi llamada entre hilos en Windows Forms?

Me encuentro con un problema con una aplicación de formularios Windows Forms.

Se debe mostrar un formulario desde otro hilo. Entonces, en la clase de formulario, tengo el siguiente código:

private delegate void DisplayDialogCallback();

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

Ahora, cada vez que ejecuto esto, unInvalidOperationException es arrojado a la líneathis.ShowDialog();:

"La operación entre subprocesos no es válida: controle 'SampleForm' al que se accede desde un subproceso distinto del subproceso en el que se creó"

¿Qué hay de malo con este código? ¿No es una forma válida de hacer llamadas entre hilos? ¿Hay algo especial conShowDialog()?

Respuestas a la pregunta(7)

Su respuesta a la pregunta