Dispatcher kommt nicht in C # Windows Forms Application

7

Ich habe eine C # Windows Forms-Anwendung mit einer Fortschrittsanzeige. Ich möchte das basierend auf einem bestimmten Methodenstatus dynamisch voranbringen. Ich habe diese Methode in einer separaten Klasse und erstelle einen neuen Thread für diese Methode mit einem Delegaten, um den Status der Methode an den übergeordneten Thread zu übergeben.

Die gleiche Situation, die ich in einer WPF-Anwendung mit progressbar.Dispatcher lösen kann, aber in einer Windows Forms-Anwendung gibt es keinen Dispatcher, auch wenn ich den System.Threading -Namespace verwende.

progressbar.Dispatcher scheint nur in einer WPF-Anwendung verfügbar zu sein.

    
Kishor 23.11.2012, 06:50
quelle

3 Antworten

11

In Winforms können Sie ProgressBar.Invoke oder ProgressBar.BeginInvoke verwenden, um das Steuerelement von einem anderen Thread zu aktualisieren.

    
sam1589914 23.11.2012, 08:22
quelle
5

In der Windows Form-Anwendung sollte BackgroundWorker perfekt für Ihre Aufgabe passen. Insbesondere hat sie ReportProgress method, um den Fortschritt abhängig von Ihren Berechnungen zu senden und ProgressChanged , um Änderungen vom UI-Thread zu verfolgen. Weitere Informationen finden Sie im MSDN-Artikel

    
Nogard 23.11.2012 07:35
quelle
4

In WinForms befinden sich die Methoden Invoke/BeginInvoke direkt auf den Steuerobjekten, wie Sie in den Dokumenten von System.Windows.Forms.Control . So hätten Sie zum Beispiel progressBar.BeginInvoke(...) .

    
Tudor 23.11.2012 08:39
quelle