C # - Aktualisieren der GUI unter Verwendung von Nicht-Haupt-Thread

Ich habe ein Programm mit Klassen

GUIHochladeund ein Puffer zwischen den 2 Klassen - dh zur Kommunikation zwischen den 2 Klassen.

DasUpload Klasse verwendetProcess, um eine Befehlszeilen-FTP-App auszuführen. Ich möchte die von der FTP-App erzeugte Ausgabe zurückgeben, um sie in einem @ anzuzeigetextbox in der GUI.
Ich habe versucht, den folgenden Code zu verwenden, der abgeschnitten wurde.

Upload Class (beginProcess () ist eine Methode zum Starten des Threads (hier nicht gezeigt)):

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

Buffer Class:

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

Hauptklasse

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

ie Sie sehen, sind mir beim writeToTextBoxEvent der Main-Methode die Ideen ausgegangen. Ich bin nicht sicher, ob ein UI-Update mithilfe eines benutzerdefinierten Ereignisses der beste Weg ist, dies zu tun. Wenn mich jemand in die richtige Richtung weisen könnte, wäre ich sehr dankbar.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage