C # problema de llamada entre hilos

Estoy escribiendo una aplicación de formulario en C # y necesito poder cambiar el contenido de un cuadro de texto enriquecido desde cualquier hilo, intenté usar undelega y InvokeRequired, pero el delegado que hice todavía me da un error de llamada entre hilos, e InvokeRequired bloquea el formulario, sin dar un error. Función que necesito poder ejecutar desde cualquier hilo:

    public static void updateSub(int what)
    {
        subDisplay.subBox.Text = tb[what];
    }

El delegado que intenté usar:

    public delegate void UpdateDelegateVoid(int what);
    static public UpdateDelegateVoid uSub = new UpdateDelegateVoid(updateSub);
    uSub(0);

Mi invocación Código requerido:

    public static void updateSub(int what)
    {
        if (subDisplay.subBox.InvokeRequired)
        {
            subDisplay.subBox.Invoke(new MethodInvoker(finish));
        }
        else
        {
            subDisplay.subBox.Text = tb[what];
        }
    }

No estoy realmente seguro de por qué el código anterior no funciona. ¡Gracias

Respuestas a la pregunta(3)

Su respuesta a la pregunta