Wie die post ein UI-Nachricht von einem worker-thread im C#
Ich Schreibe ein einfaches winforms-app in C#. Ich erstellen einen worker-thread, und ich will das Hauptfenster zu reagieren, um den tread er seine Arbeit-nur ändern Sie text in einem Textfeld Testfeld.Text = "Bereit". Ich habe versucht, Ereignisse und callbacks, aber Sie alle führen in den Kontext der aufrufenden thread und nicht UI von einem worker-thread.
Ich wissen, wie man es in C/C++: Aufruf von PostMessage aus dem worker-thread. Ich nehme an, ich könnte, rufen Sie einfach die Windows-API aus C#, aber gibt es da nicht mehr .NETTO-spezifische Lösung?
- Kontrolle.BeginInvoke() ist das genaue äquivalent zu PostMessage(). Mit dem zusätzlichen Vorteil, dass Sie können wählen Sie die Ziel-Methode auf, und übergeben ihm irgendwelche Argumente, die Sie wollen.
InformationsquelleAutor Bartosz Milewski | 2011-03-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In den event-callback aus dem thread abgeschlossen, verwenden Sie die
InvokeRequired
Muster, wie gezeigt, durch die verschiedenen Antworten auf diese SO posten unter Beweis stellen.C#: Automatisieren Sie die InvokeRequired-code-Muster
Andere Möglichkeit wäre die Verwendung der
BackgroundWorker
Komponente für die Ausführung von deinem thread. DieRunWorkerCompleted
event-handler führt in den Kontext des Threads, der gestartet wird der Arbeiter.ich es normalerweise tun so etwas wie dieses
Die Kontrolle.Invoke() oder Form.Invoke () - Methode wird ausgeführt, die delegieren, die Sie auf dem UI-thread.
Können Sie mithilfe der Invoke-Funktion der form. Die Funktion wird auf dem Benutzeroberflächenthread ausgeführt.
EX :
Mit C# MethodInvoker.Invoke() für eine GUI-app... ist das gut?