Atualizando GUI usando thread não principal

Eu tenho um programa que tem aulas

GUIEnvioe um buffer entre as 2 classes - isto é, usado para se comunicar entre as 2 classes.

oUpload classe usaProcess para executar um aplicativo FTP de linha de comando. Desejo retornar a saída produzida pelo aplicativo FTP a ser exibida em umtextbox na GUI.
Eu tentei usar o seguinte código que foi truncado.

Classe de Upload (beginProcess () é um método usado para iniciar o Thread (não mostrado aqui)):

public delegate void WputOutputHandler(object sender, DataReceivedEventArgs e);
class Upload
{
    private WputOutputHandler wputOutput;

    beginProcess()
    {
        Process pr = new Process();                                                 
        pr.StartInfo.FileName = @"wput.exe";                                        
        pr.StartInfo.RedirectStandardOutput = true;
        pr.StartInfo.UseShellExecute = false;
        pr.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        pr.OutputDataReceived += new DataReceivedEventHandler(OnDataReceived);
        pr.ErrorDataReceived += new DataReceivedEventHandler(OnDataReceived);
        pr.Start();                                                                 
        pr.BeginOutputReadLine();
        pr.WaitForExit();
    }


    public void OnDataReceived(object sender, DataReceivedEventArgs e)
    {
        if(wputOutput != null)
        {
            wputOutput(sender, e);
        }
    }


    public event WputOutputHandler WputOutput
    {
        add
        {
            wputOutput += value;
        }
        remove
        {
            wputOutput -= value;
        }
    }
}

Classe de buffer:

public void EventSubscriber()
{
    uploadSession.WputOutput += Main.writeToTextBoxEvent;
}

Classe principal:

public void writeToTextBoxEvent(object sender, DataReceivedEventArgs e)
{
    if(this.textBox1.InvokeRequired)
    {
        MethodInvoker what now?
    }
    else
    {
        textBox1.Text = e.Data;
    }
}

Como você pode ver, quando se trata de writeToTextBoxEvent do método Main, fiquei sem ideias. Não tenho certeza se fazer uma atualização da interface do usuário usando um evento personalizado é a melhor maneira de fazê-lo. Se alguém pudesse me indicar a direção certa, ficaria muito grato.

questionAnswers(5)

yourAnswerToTheQuestion