Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Asynchrones Programmieren vs Threading | Threading
Fortgeschrittenes C# mit .NET
course content

Kursinhalt

Fortgeschrittenes C# mit .NET

Fortgeschrittenes C# mit .NET

1. Einführung in die Desktop-Entwicklung mit .NET
2. Interaktive GUI
3. Threading
4. Generics & Reflection

book
Asynchrones Programmieren vs Threading

Im letzten Kapitel haben wir Threading verwendet, um eine Methode gleichzeitig in unserer Anwendung auszuführen. Wir können dasselbe auch mit Asynchroner Programmierung erreichen:

Im Video haben Sie gesehen, dass wir die Anweisung timerLabel.Text = … nicht explizit im Hauptthread ausgeführt haben. Dies wird in Kürze erklärt.

Sie fragen sich vielleicht, was der Unterschied zwischen Asynchroner Programmierung und Multithreading ist? Nun, es ist grundlegend, wie die beiden verschiedenen Funktionen arbeiten.

Wenn Sie sich an die vorherigen Kurse erinnern, haben wir über Asynchrone Programmierung gesprochen und auch gelernt, wie man sie in unseren Anwendungen verwendet. Wir haben jedoch nicht tiefgehend erforscht, wie sie auf niedriger Ebene genau funktioniert.

Im Threading erstellen wir manuell neue Threads, um Methoden darauf auszuführen, damit diese Methoden gleichzeitig oder parallel zum Hauptthread ausgeführt werden, und die Threads als Ganzes sind darauf ausgelegt, diese Methoden auszuführen. Es ist auch unsere Verantwortung, die Threads korrekt freizugeben (zu löschen) und sicherzustellen, dass es keine Konflikte zwischen den Threads gibt - worüber wir im nächsten Kapitel mehr erfahren werden.

In der Asynchronen Programmierung können wir die Methoden ebenfalls gleichzeitig ausführen, jedoch befassen wir uns in diesem Fall nicht manuell mit Threads. Was passiert also im Hintergrund? Das .NET-Framework ist dafür verantwortlich, Threads verschiedenen Aufgaben zuzuweisen und wieder zu entziehen, wenn sie asynchron ausgeführt werden. Es ist wichtig zu beachten, dass die asynchrone Programmierung keine neuen Threads erstellt, sondern freie Threads aus dem Thread Pool verschiedenen Aufgaben zuweist.

Thread Pool ist eine Sammlung von vorab zugewiesenen Threads, die von .NET verwaltet werden. Diese Threads sind bereit und warten darauf, Aufgaben auszuführen. Der Thread-Pool wird automatisch von .NET erstellt, wenn Ihre Anwendung startet.

Wenn das Programm auf eine asynchrone Aufgabe trifft, wird diese einem verfügbaren Thread aus dem Thread-Pool zugewiesen. Es ist auch möglich, dass in bestimmten Fällen die Aufgabe über mehrere verschiedene Threads ausgeführt wird. Zum Beispiel werden I/O (Eingabe - Ausgabe) Operationen, wie das Lesen oder Schreiben in eine Datei, auf einer sehr niedrigen Ebene, näher an der CPU, ausgeführt, wo das Konzept von Threads nicht existiert. Daher sind die Operationen nicht an einen bestimmten Thread gebunden und blockieren somit keinen spezifischen Thread während der Ausführung.

Es wird nicht unbedingt eine Eins-zu-eins-Zuordnung von Aufgaben zu Threads geben; daher hängt es im Allgemeinen davon ab, welche Art von Operation ausgeführt wird. Es wird vollständig von .NET selbst verwaltet, und wir müssen uns normalerweise nicht um die Hintergrunddetails kümmern. Genau wie im Video haben wir die Zuweisung der Eigenschaft timerLabel.Text = … nicht explizit im Hauptthread ausgeführt. .NET entscheidet und weist automatisch relevante Threads den relevanten Teilen der Methoden zu.

Sie können eine kurze Demonstration im folgenden Video sehen:

Da wir nun eine Vorstellung davon haben, wie es im Backend funktioniert, ist es ein guter Zeitpunkt zu fragen, was der praktische Unterschied zwischen ihnen ist? Und wann sollten wir Threading oder asynchrone Programmierung verwenden?

Asynchrone Programmierung basiert auf der Erstellung und Ausführung von Tasks. Während Threading auf der Erstellung und Verwaltung von Threads basiert.

Obwohl mit beiden Methoden ähnliche Ergebnisse erzielt werden können, sind beide Methoden für sehr unterschiedliche Dinge gedacht.

Asynchrone Programmierung ist speziell für I/O-gebundene Aufgaben nützlich, die gleichzeitig ausgeführt werden müssen, ohne das Hauptprogramm zu blockieren. Zum Beispiel, während Daten aus einer Datei, einer API oder einer Datenbank abgerufen werden, kann der Hauptthread blockiert werden, aber wir können asynchrone Methoden verwenden, um auf den Abschluss dieser Aufgaben gleichzeitig zu warten und die Ergebnisse der Aufgaben abzurufen, wenn die Aufgaben schließlich abgeschlossen sind.

Threading hingegen ist besser geeignet für längere, aufwendigere Operationen, die CPU-gebunden sind. Zum Beispiel komplexe, langwierige Berechnungen, Bild- oder Videobearbeitung oder einfach etwas wie das Abspielen eines Videos oder Audios, während das Programm reaktionsfähig bleibt. Wir können auch mehrere ressourcenintensive Operationen verschiedenen Threads zuweisen, um die Leistung zu maximieren.

1. Wahr oder Falsch: Asynchrone Programmierung erstellt immer neue Threads für jede Aufgabe.

2. Welche Methode ist typischerweise besser geeignet, um die Reaktionsfähigkeit in Anwendungen mit I/O-gebundenen Aufgaben zu verbessern?

3. Welche der folgenden Aufgaben ist besser für Asynchrones Programmieren geeignet?

4. Was ist der Unterschied zwischen Asynchronem Programmieren und Multithreading?

Wahr oder Falsch: Asynchrone Programmierung erstellt immer neue Threads für jede Aufgabe.

Wahr oder Falsch: Asynchrone Programmierung erstellt immer neue Threads für jede Aufgabe.

Wählen Sie die richtige Antwort aus

Welche Methode ist typischerweise besser geeignet, um die Reaktionsfähigkeit in Anwendungen mit I/O-gebundenen Aufgaben zu verbessern?

Welche Methode ist typischerweise besser geeignet, um die Reaktionsfähigkeit in Anwendungen mit I/O-gebundenen Aufgaben zu verbessern?

Wählen Sie die richtige Antwort aus

Welche der folgenden Aufgaben ist besser für Asynchrones Programmieren geeignet?

Welche der folgenden Aufgaben ist besser für Asynchrones Programmieren geeignet?

Wählen Sie die richtige Antwort aus

Was ist der Unterschied zwischen Asynchronem Programmieren und Multithreading?

Was ist der Unterschied zwischen Asynchronem Programmieren und Multithreading?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt