C # - Обновление GUI с использованием неосновного потока

У меня есть программа, которая имеет классы

графический интерфейс пользователяЗагрузитьи буфер между двумя классами - т.е. используется для связи между двумя классами.

Upload класс используетProcess запустить приложение FTP командной строки. Я хочу вернуть вывод, полученный приложением FTP, для отображения вtextbox в графическом интерфейсе
Я попытался использовать следующий код, который был усечен.

Класс загрузки (beginProcess () - это метод, используемый для запуска потока (здесь не показан)):

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;
        }
    }
}

Буферный класс:

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

Основной класс:

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

Как вы можете видеть, когда дело доходит до метода writeToTextBoxEvent метода Main, у меня заканчиваются идеи. Я не уверен, что обновление пользовательского интерфейса с помощью пользовательского события - даже лучший способ сделать это. Если бы кто-то мог указать мне правильное направление, я был бы очень благодарен.

Ответы на вопрос(5)

Ваш ответ на вопрос