Autor Beitrag
C#
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mo 24.11.14 11:57 
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.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: 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)

Für diesen Beitrag haben gedankt: C#
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: C#
C# Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 561
Erhaltene Danke: 65

Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
BeitragVerfasst: Mo 24.11.14 16:47 
Ja ich dachte mir schon das sowas kommt :D dann synchronisiere ich im UI Thread.

_________________
Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler