Zdarzenie (informatyka) - Event (computing)

W programowania i projektowania oprogramowania , zdarzenie jest działaniem lub występowanie rozpoznawane przez oprogramowanie , często pochodzące asynchronicznie z otoczenia zewnętrznego, które mogą być obsługiwane przez oprogramowanie. Zdarzenia komputerowe mogą być generowane lub wyzwalane przez system, użytkownika lub w inny sposób. Zazwyczaj zdarzenia są obsługiwane synchronicznie z przepływem programu ; oznacza to, że oprogramowanie może mieć jedno lub więcej dedykowanych miejsc, w których obsługiwane są zdarzenia, często jest to pętla zdarzeń . Źródłem zdarzeń jest użytkownik, który może wchodzić w interakcję z oprogramowaniem za pośrednictwem urządzeń peryferyjnych komputera – na przykład pisząc na klawiaturze . Innym źródłem jest urządzenie sprzętowe , takie jak zegar . Oprogramowanie może również wyzwolić własny zestaw zdarzeń w pętli zdarzeń, np. w celu zakomunikowania zakończenia zadania. Mówi się, że oprogramowanie, które zmienia swoje zachowanie w odpowiedzi na zdarzenia, jest sterowane zdarzeniami , często w celu bycia interaktywnym .

Opis

Systemy sterowane zdarzeniami są zwykle używane, gdy istnieje jakaś asynchroniczna aktywność zewnętrzna, która musi być obsługiwana przez program; na przykład użytkownik, który naciśnie przycisk myszy. System sterowany zdarzeniami zazwyczaj uruchamia pętlę zdarzeń , która wciąż czeka na takie działania, np. dane wejściowe z urządzeń lub alarmy wewnętrzne. Gdy wystąpi jedno z nich, zbiera dane o zdarzeniu i wysyła zdarzenie do oprogramowania obsługi zdarzeń , które się nim zajmie.

Program może wybrać ignorowanie zdarzeń i mogą istnieć biblioteki do wywoływania zdarzenia do wielu programów obsługi, które mogą być zaprogramowane do nasłuchiwania określonego zdarzenia. Dane skojarzone ze zdarzeniem określają co najmniej, jakiego typu jest to zdarzenie, ale mogą zawierać inne informacje, takie jak czas jego wystąpienia, kto lub co spowodowało jego wystąpienie oraz dodatkowe dane dostarczone przez źródło zdarzenia do programu obsługi o tym, w jaki sposób zdarzenie powinno zostać przetworzone.

Zdarzenia są zwykle używane w interfejsach użytkownika, gdzie działania w świecie zewnętrznym (kliknięcia myszą, zmiana rozmiaru okna, naciśnięcia klawiatury, wiadomości z innych programów itp.) są obsługiwane przez program jako seria zdarzeń. Programy napisane dla wielu środowisk okienkowych składają się głównie z programów obsługi zdarzeń.

Zdarzenia mogą być również używane na poziomie zestawu instrukcji , gdzie uzupełniają przerwania . W porównaniu z przerwaniami zdarzenia są zwykle obsługiwane synchronicznie: program jawnie czeka na obsługę zdarzenia (zwykle przez wywołanie instrukcji, która wywołuje następne zdarzenie), podczas gdy przerwanie może zażądać obsługi w dowolnym momencie.

Model wydarzenia delegata

Model zdarzenia delegata. clickmejest źródłem zdarzenia — przycisk w tym przykładzie — i zawiera listę detektorów.

Typowym wariantem programowania obiektowego jest model zdarzeń delegata , który jest dostarczany przez niektóre graficzne interfejsy użytkownika . Model ten opiera się na trzech podmiotach:

  • kontrolka, która jest źródłem zdarzenia
  • detektory , zwane także handlerami zdarzeń , które otrzymują powiadomienie o zdarzeniu ze źródła
  • interfejsy (w szerszym znaczeniu tego terminu) opisujące protokół, za pomocą którego ma być komunikowane zdarzenie.

Ponadto model wymaga, aby:

  • każdy słuchacz musi zaimplementować interfejs dla zdarzenia, którego chce słuchać
  • każdy słuchacz musi zarejestrować się u źródła, aby zadeklarować chęć wysłuchania wydarzenia listen
  • za każdym razem, gdy źródło generuje zdarzenie, przekazuje je zarejestrowanym słuchaczom, zgodnie z protokołem interfejsu.

C# używa zdarzeń jako specjalnych delegatów, które mogą być uruchamiane tylko przez klasę, która je deklaruje. Pozwala to na lepszą abstrakcję , na przykład:

delegate void Notifier (string sender);

class Model {
    public event Notifier notifyViews;
    public void Change() { ... notifyViews("Model"); }
}

class View1 {
    public View1(Model m) {
        m.notifyViews += new Notifier(this.Update1);
    }

    void Update1(string sender) {
        Console.WriteLine(sender + " was changed during update"); 
    }
}

class View2 {
    public View2(Model m) {
        m.notifyViews += new Notifier(this.Update2); 
    }

    void Update2(string sender) {
        Console.WriteLine(sender + " was changed"); 
    }
}

class Test {
    static void Main() {
        Model model = new Model();

        new View1(model);
        new View2(model);
        model.Change();
    }
}

Obsługa zdarzeń

W programowaniu komputerowym, procedura obsługi zdarzeń to podprogram wywołania zwrotnego, który obsługuje dane wejściowe otrzymane w programie (nazywane odbiornikiem w Javie i JavaScript ). Każde zdarzenie jest fragmentem informacji na poziomie aplikacji z podstawowej struktury , zazwyczaj zestawu narzędzi GUI . Zdarzenia GUI obejmują naciśnięcia klawiszy , ruchy myszy , wybory akcji i wygasanie liczników czasu . Na niższym poziomie zdarzenia mogą reprezentować dostępność nowych danych do odczytu pliku lub strumienia sieciowego. Obsługa zdarzeń to główna koncepcja w programowaniu sterowanym zdarzeniami .

Zdarzenia są tworzone przez framework w oparciu o interpretację danych wejściowych niższego poziomu, które same mogą być zdarzeniami niższego poziomu. Na przykład ruchy myszy i kliknięcia są interpretowane jako wybory menu. Zdarzenia początkowo pochodzą z działań na poziomie systemu operacyjnego, takich jak przerwania generowane przez urządzenia sprzętowe, instrukcje przerwań programowych lub zmiany stanu w odpytywaniu . Na tym poziomie procedury obsługi przerwań i obsługi sygnałów odpowiadają obsłudze zdarzeń.

Utworzone zdarzenia są najpierw przetwarzane przez dyspozytora zdarzeń w ramach struktury. Zwykle zarządza powiązaniami między zdarzeniami i programami obsługi zdarzeń i może kolejkować programy obsługi zdarzeń lub zdarzenia do późniejszego przetwarzania. Dyspozytorzy zdarzeń mogą bezpośrednio wywoływać programy obsługi zdarzeń lub czekać na usunięcie zdarzeń z kolejki z informacjami o wykonaniu procedury obsługi.

Powiadomienie o wydarzeniu

Powiadomienie o zdarzeniach to termin używany w połączeniu z oprogramowaniem komunikacyjnym do łączenia aplikacji generujących małe wiadomości („zdarzenia”) z aplikacjami, które monitorują powiązane warunki i mogą podejmować działania wywołane zdarzeniami.

Powiadamianie o zdarzeniach jest ważną funkcją w nowoczesnych systemach bazodanowych (używaną do informowania aplikacji o zaistnieniu warunków, których oczekują), nowoczesnych systemach operacyjnych (używanych do informowania aplikacji, kiedy powinny podjąć jakieś działania, takie jak odświeżenie okna) i nowoczesnych systemy, w których producent zdarzenia może być na innej maszynie niż konsument lub konsumenci. Platformy powiadamiania o zdarzeniach są zwykle projektowane w taki sposób, aby aplikacja generująca zdarzenia nie musiała wiedzieć, które aplikacje je wykorzystają, ani nawet ile aplikacji będzie monitorować strumień zdarzeń.

Czasami jest używany jako synonim publikowania-subskrypcji , terminu odnoszącego się do jednej klasy produktów obsługujących powiadamianie o zdarzeniach w ustawieniach sieciowych. Model wirtualnej synchronizacji jest czasami używany do wyposażania systemów powiadamiania o zdarzeniach i systemów publikowania-subskrybowania w silniejsze gwarancje odporności na błędy i spójności.

Zdarzenia generowane przez użytkowników

Istnieje wiele sytuacji lub zdarzeń, które program lub system może generować lub na które może reagować. Niektóre typowe zdarzenia generowane przez użytkowników obejmują:

Zdarzenia myszy

Urządzenie wskazujące może generować wiele rozpoznawalnych przez oprogramowanie gestów urządzenia wskazującego . Mysz może generować wiele zdarzeń myszy, takich jak ruch myszy (w tym kierunek ruchu i odległość), lewy/prawy przycisk myszy w górę/w dół oraz ruch kółkiem myszy lub kombinację tych gestów.

Zdarzenia klawiaturowe

Naciśnięcie klawisza na klawiaturze lub kombinacji klawiszy generuje zdarzenie na klawiaturze, umożliwiając aktualnie uruchomionemu programowi reagowanie na wprowadzone dane, takie jak klawisze, które użytkownik nacisnął.

Wydarzenia związane z joystickiem

Poruszanie joystickiem generuje sygnał analogowy XY. Często mają wiele przycisków do wyzwalania zdarzeń. Niektóre gamepady do popularnych pudełek do gier używają joysticków.

Wydarzenia na ekranie dotykowym

Zdarzenia generowane za pomocą ekranu dotykowego są powszechnie nazywane zdarzeniami dotyku lub gestami .

Zdarzenia urządzenia

Zdarzenia związane z urządzeniem obejmują działania wykonywane na urządzeniu lub do urządzenia, takie jak potrząsanie, przechylanie, obracanie, ruch itp.

Zobacz też

Bibliografia

Linki zewnętrzne