Código de limpieza lleno de InvokeRequired

Sé que al manipular los controles de la interfaz de usuario desde cualquier subproceso que no sea de la interfaz de usuario, debe ordenar sus llamadas al subproceso de la interfaz de usuario para evitar problemas. El consenso general es que debe usar test InvokeRequired y, si es cierto, usar .Invoke para realizar el cálculo de referencias.

Esto conduce a una gran cantidad de código que se ve así:

private void UpdateSummary(string text)
{
    if (this.InvokeRequired)
    {
        this.Invoke(new Action(() => UpdateSummary(text)));
    }
    else
    {
        summary.Text = text;
    }
}

Mi pregunta es esta: ¿puedo omitir la prueba InvokeRequired y simplemente llamar a Invoke, así:

private void UpdateSummary(string text)
{
    this.Invoke(new Action(() => summary.Text = text));
}

¿Hay algún problema al hacer esto? Si es así, ¿hay una mejor manera de mantener la prueba InvokeRequired sin tener que copiar y pegar este patrón por todas partes?

Respuestas a la pregunta(8)

Su respuesta a la pregunta