Entwickler-Ecke

Basistechnologien - Multithreading - Events bei WinForms und WPF


C# - Mo 24.11.14 11:57
Titel: Multithreading - Events bei WinForms und WPF
Hey Leute,

ich habe eine Klassenbibliothek erstellt, die mit Multithreading arbeitet. Dadurch werden auch einige Events von verschiedenen Threads geworfen, die aber mit dem UI Thread synchronisiert werden sollen. Ich weiß dass man bei WinForms ISynchronizeInvoke (oder so ähnlich :mrgreen:) verwendet und bei WPF den Dispatcher. Kann ich die Bibliothek auch für beide Systeme kompatibel machen? Ich möchte nicht immer in der UI Anwendung Delegates erstellen müssen. Sonst habe ich für jedes Event letztendlich zwei Methoden.


Ralf Jansen - Mo 24.11.14 13:41

Zeig doch mal ein Beispiel wo du das warum einsetzen möchtest.

Normalerweise würde ich behaupten das sich das nach Bad Practice anhört. Synchronisierung in die UI ist Aufgabe der UI (bzw. des UI Threads). Nur dieser sollte die nötigen Informationen haben. Ich habe zuwenig Erfahrung mit WPF um mir da ein Urteil zu erlauben. In Winforms ist es sicherlich bequem manchmal ein SynchronizingObject zu verwenden aber es fördert eigentlich falsches Vorgehen weil es die Verantwortlichkeiten in die falsche Richtung dreht (Nur weil es das Framework anbietet muss es ja keine gute Idee sein)


Th69 - Mo 24.11.14 14:04

Hallo,

sehe ich auch so.

@C#: du könntest aber eine Hilfsklasse (oder zwei - je nach UI) entwickeln, welche die jeweiligen Ereignisse abonniert und passend an den UI-Thread weiterdelegiert (ähnlich wie z.B. der BackgroundWorker.


C# - Mo 24.11.14 16:47

Ja ich dachte mir schon das sowas kommt :D dann synchronisiere ich im UI Thread.