Auf Ereignis in C# warten

Naila Saad Siddiqui 15 Februar 2024
  1. Ereignisse in C#
  2. Auf ein Event in C# warten
Auf Ereignis in C# warten

Dieser Programmierartikel stellt Events in C# kurz vor und bewegt sich dann zum Warten auf ein Event in C#.

Ereignisse in C#

Ereignisse ermöglichen es Klassen und Objekten, andere Klassen und Objekte zu benachrichtigen, wenn bestimmte Dinge passieren. Die Publisher-Klasse sendet das Ereignis, und die Klassen, die es empfangen oder verarbeiten, werden als Abonnenten bezeichnet.

Einige Ereignisse werden standardmäßig deklariert, wie Schaltflächenklicks, Mausereignisse (Mausbewegung, Klick, Doppelklick usw.), Tastaturereignisse und viele andere. Aber Sie können auch Ihre Ereignisse deklarieren.

Event-Handler

Ereignishandler sind die Funktionen, die aufgerufen werden, wenn ein Ereignis eintritt. Diese Handler werden automatisch aufgerufen, wenn dieses Ereignis eintritt, und führen ihre Aktion aus.

Mehrere Ereignishandler können mit einem Ereignis verbunden werden, und wenn das Ereignis eintritt, werden sie alle synchron aufgerufen. Ereignisse, die Clients über den sich ändernden Zustand eines Objekts informieren, können auch von Ereignisbehandlungsroutinen behandelt werden.

Wir können also sagen, dass Ereignishandler aufgerufen werden, wenn ein Ereignis ausgelöst wird, und Sie können dem Code mitteilen, was Sie tun müssen, wenn dieses Ereignis in der Ereignishandlerfunktion ausgelöst wird.

Auf ein Event in C# warten

Die Dinge sind sehr einfach, wenn Sie eine Funktion aufgrund eines Ereignisses aufrufen müssen. Beispielsweise müssen Sie eine Funktion aufrufen, wenn auf eine Schaltfläche geklickt wird.

Wenn ein anderes Ereignis endet, werden die Dinge kompliziert, wenn Sie die Funktion aufrufen müssen. Das bedeutet, dass Sie einen Ereignishandler warten lassen müssen, bis ein anderes Ereignis seine Aufgabe erfüllt.

Lassen Sie uns dies an einem einfachen Beispiel demonstrieren: zwei Schaltflächen und ein Textfeld. Wir müssen auf die erste Schaltfläche klicken, und wenn diese Schaltfläche angeklickt wird, müssen wir den Willkommenstext in das Textfeld eingeben, aber diesen Text anzeigen, wenn auch auf die zweite Schaltfläche geklickt wird.

Wir werden zuerst ein Formular in einer Windows-Formularanwendung erstellen und drei Steuerelemente darauf platzieren, 2 Schaltflächen und ein Textfeld wie im folgenden Bild.

Beispiel der Fensterformular-Steuerelemente

Wir müssen das Textfeld ausfüllen, wenn sowohl button1 als auch button2 angeklickt werden. Um diese Aufgabe zu erledigen, müssen wir im Handler von button1 warten, bis button2 seine Aufgabe beendet hat, und dann den text des Textfelds setzen.

Die Event-Handler-Funktion von button1 verwendet eine Klasse TaskCompletionSource. Diese Klasse lässt den Handler für button1 warten, bis der Handler für button2 fertig ist.

Code:

TaskCompletionSource<bool> tcs = null;
private async void button1_Click(object sender, EventArgs e) {
  tcs = new TaskCompletionSource<bool>();
  label1.Text = "Click the Second Button";
  await tcs.Task;  // system will wait here
  textBox1.Text = "You are done! ThankYou";
}

Wenn wir eine Methode brauchen, um auf eine andere Methode zu warten, deklarieren wir diese Methode als async und lassen diese Methode dann await. Dies wird an diesem Punkt zurückkehren, wenn die zweite Aufgabe abgeschlossen ist.

private void button2_Click(object sender, EventArgs e) {
  tcs.TrySetResult(true);
}

Für die zweite Schaltfläche wird beim Klicken auf die Schaltfläche die obige Handler-Funktion aufgerufen. Es wird die Aufgabenbeendigung auf wahr setzen und der erwarteten Aufgabe signalisieren, dass die andere Aufgabe abgeschlossen ist, so dass sie ihre verbleibende Funktion ausführen wird.

Ausgang:

Ausgabe nach Anklicken der ersten Schaltfläche

Wenn auf die erste Schaltfläche geklickt wird, wird auch eine Meldung zum Klicken auf die zweite Schaltfläche ausgegeben. Mal sehen, was passiert, wenn auf die zweite Schaltfläche geklickt wird.

Ausgabe beim Klicken auf die zweite Schaltfläche

Nach dem Klick auf den zweiten Button zeigt das Textfeld den Text, den wir in der Handler-Funktion des ersten Buttons gesetzt haben. Dies bedeutet, dass die Handler-Funktion der ersten Schaltfläche darauf gewartet hat, dass auf die zweite Schaltfläche geklickt wird, und dann die Ausführung der verbleibenden Implementierung beendet hat.

Auf diese Weise können wir darauf warten, dass ein Ereignis seine Aufgabe beendet.

Verwandter Artikel - Csharp Event