Zum Inhalt springen

Reaktive Programmierung


informatikerin86

Empfohlene Beiträge

Hallo Leute,

ich soll Informationen zu reaktiver Programmierung in C# suchen.

Als Beispiel habe ich INotifyPropertyChanged bekommen, das ist im Grunde reaktive Programmierung allerdings nicht besonders elegant.

Das Ziel ist es weniger Events von Hand registrieren zu müssen.

Im Internet finde ich einige Informationen, aber leider keine mit denen ich richtig weiter komme.

Bisher habe ich Clinq weiterverfolgt und einen Blog-Eintrag:

Reactive Programming in C#: ReactiveObject Andy Kutruff

Kennt sich hier jemand zufällig mit dem Thema aus und könnte mir Tipps geben?

Grüße

Informatikerin

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

ich habe Dir mal ein Sample Code mit einigen Kommentaren geschrieben.

Die Oberfläche besteht aus einer Form mit einer Listview, einem Start knopf und einem Knopf zum wild draufrum drücken

um zu zeigen dass die Form tatsächlich noch reagiert.

Zusätlich liegt demProgramm noch eine Klasse bei deren Instanzen in der Listview dargestellt werden.

Der Code der Form beinhaltet das erzeugen der darzustellenden Instanzen so wie den nötigen Code um eine

längere Arbeit im Hintergrund zu sumulieren und die Oberfläche während der "Arbeitszeit" reaktiv zu halten.

Zudem wird während der "Arbeitzeit" die Oberfläche manipuliert (es werden Items zur Listview hinzugefügt).

Trotz all dem bleibt diese reaktiv.

grundsätzlich soll das nur ein einfaches Beispiel sein. Wenn Du länger Abreiten am Objektmodell von statten gehen lassen willst

solltest Du diese Arbeit AUF KEINEN FALL in GUI Komponenten Reinbringen.

z.B.: eine Form zeigt eine Liste von Autos un deren verfügbarkeit an. Die Liste der Autos muss immer

aktuell sein und somit regelmäßig (z.b. Alle 2 Sek) geupdatet werden. Zu dem soll der User noch selber ein

bestimmtes Auto aus der Liste manuell Updaten dürfen.

Das Grobe Design wäre dann eine Form für die Oberfläche (sammt Knopf)

Eine Klasse Die ein Auto representiert.

Eine Klasse die einen Automanager representiert.

Der Automanager initialisert seine Liste, führt diese, Updated diese und kann einzelene Autos neuladen.

Der Automanager verfügt über Events mit deren Hilfe er zu allen Programmteilen die sich für bestimmte Ereignise

interessieren komunizieren kann.

Der Form ist der Automanager bekannt und kann über öffentliche Methoden des Automanagers diesen Anweisen

was tolles zu tun. Um auf Ereignise des Automanagers zu reagieren meldet die Form bei diesem eigene EventHandler an.

Reaktiv.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Immer wieder gern.

Wenn du, statt "Windows Forms", WPF (Windows Presentation Foundation) zur Oberflächengestalltung nutzt kannst Du Dir die Mühe mit den delagtes und events zur Anzeigeaktualisierung sparen. Dann muss die angezeigte Klasse "INotifyPropertyChanged" implementieren und alle relevanten Properties bei neu zuweisung eines Wertes das PropertyChanged Event callen.

Die Instanzen der Objekte werden dann in einer Liste vom Typ "ObservableList<Type>" geführt und diese der Listview als Databinding zugewiesen werden. Mit einem DataTemplate für die Klasse kannst Du dann die Darstellung einer Instanz der anzuzeigenden Klasse deffinieren und dieses als ItemTemplate der Listview zuweisen.

Damit werden dann Änderung an Objekten der Liste automatisch angezeigt.

Zu min in der Theorie: Das ist im Mom noch ein bischen verbuggt und Du musst einen Standart Workaround für die Observable List Einbauen .... ein SampleCode kann ich bei bedarf mal erstellen - meld dich einfach wenn das benötigt ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...