C# – Events
Kolejnym typem, który możemy mieć w klasie są zdarzenia. Wielokrotnie w rozwoju oprogramowania potrzebujemy interakcji aby śledzić komponenty, które wykonują jakieś interesujące rzeczy w nieprzewidywalnym czasie. Na przykład przycisk na ekranie jest elementem, który chcemy śledzić, i chcemy wiedzieć, kiedy użytkownik klika ten przycisk. Nie wiemy dokładnie, kiedy użytkownik kliknie przycisk, ale możemy otrzymywać powiadomienia gdy użytkownik kliknie przycisk czyli gdy zajdzie zdarzenie kliknięcia przycisku i wtedy możemy wykonać pewien kod w reakcji na to zdarzenie.
I Nie chodzi tylko o komponenty na ekranie takie jak przycisk. Czasami musimy zapisać dane do pliku lub odczytać dane z bazy danych. Być może będziemy musieli również śledzić katalog na twardym dysku i być powiadomionym, gdy użytkownik umieści nowy plik w tym katalogu lub gdy upłynie jakiś czas, ponieważ chcę wykonać jakiś kod co 60 sekund i odświeżyć niektóre dane, takie jak odświeżenie notowań giełdowych. Wszystko to są przykłady, kiedy zdarzenia są przydatne.
Zdarzenia zezwalają na śledzenie obiektu, takiego jak na przykład obiekt reprezentujący przycisk, zdarzenia pozwalają ogłaszać zajście zdarzenia każdemu, kto słucha, że wydarzyło się coś ciekawego, np. gdy użytkownik kliknie na ten przycisk.
Nazywamy to ogłoszeniem zdarzenia i mówimy, że przycisk publikuje to zdarzenie.
Kod, który jest zainteresowany zdarzeniem kliknięcia, to kod subskrybujący zdarzenie.
Możemy mieć wielu subskrybentów słuchających pojedynczego kliknięcia, tak aby po kliknięciu przycisku 0 lub więcej niezależnych fragmentów kodu zostało wykonanych.
Jeden fragment kodu może zapisać dane do pliku, inny element może zmienić kolor ekranu inny element może zalogować informacje do bazy danych, są to trzy niezależne fragmenty kodu, które wykonają się gdy zajdzie zdarzenie a piękno zdarzeń polega na tym że sam obiekt przycisku nie musi śledzić, kto subskrybuje zajście zdarzenia a subskrybenci też tego nie robią muszą tylko wiedzieć ze zaszło zdarzenie. Wszystko to odbywa się poprzez magię delegatów w C#, więc aby zrozumieć zdarzenia, najpierw musimy zrozumieć delegaty. A delegaty omawialiśmy już w wcześniejszym wpisie. Po zapoznaniu się z działaniem delegatów bardzo łatwe jest rozumienie zdarzeń, ponieważ zdarzenia są oparte na delegatach i korzystają z nich.
Przejdźmy do Visual Studio i zobaczmy to w praktyce, aby stało się to bardziej jasne, całościowe omówienie tematu Events dostępne jest na kursie:
https://dev-hobby.pl/kursy/c-podstawy-programowania/
Cały kod do kursu na githubie: