Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort zur 6. Auflage
1 Allgemeine Einführung in .NET
2 Grundlagen der Sprache C#
3 Das Klassendesign
4 Vererbung, Polymorphie und Interfaces
5 Delegates und Ereignisse
6 Strukturen und Enumerationen
7 Fehlerbehandlung und Debugging
8 Auflistungsklassen (Collections)
9 Generics – Generische Datentypen
10 Weitere C#-Sprachfeatures
11 LINQ
12 Arbeiten mit Dateien und Streams
13 Binäre Serialisierung
14 XML
15 Multithreading und die Task Parallel Library (TPL)
16 Einige wichtige .NET-Klassen
17 Projektmanagement und Visual Studio 2012
18 Einführung in die WPF und XAML
19 WPF-Layout-Container
20 Fenster in der WPF
21 WPF-Steuerelemente
22 Elementbindungen
23 Konzepte von WPF
24 Datenbindung
25 Weitere Möglichkeiten der Datenbindung
26 Dependency Properties
27 Ereignisse in der WPF
28 WPF-Commands
29 Benutzerdefinierte Controls
30 2D-Grafik
31 ADO.NET – Verbindungsorientierte Objekte
32 ADO.NET – Das Command-Objekt
33 ADO.NET – Der SqlDataAdapter
34 ADO.NET – Daten im lokalen Speicher
35 ADO.NET – Aktualisieren der Datenbank
36 Stark typisierte DataSets
37 Einführung in das ADO.NET Entity Framework
38 Datenabfragen des Entity Data Models (EDM)
39 Entitätsaktualisierung und Zustandsverwaltung
40 Konflikte behandeln
41 Plain Old CLR Objects (POCOs)
Stichwort

Download:
- Beispiele, ca. 62,4 MB

Buch bestellen
Ihre Meinung?

Spacer
Visual C# 2012 von Andreas Kühnel
Das umfassende Handbuch
Buch: Visual C# 2012

Visual C# 2012
Rheinwerk Computing
1402 S., 6., aktualisierte und erweiterte Auflage 2013, geb., mit DVD
49,90 Euro, ISBN 978-3-8362-1997-6
Pfeil 15 Multithreading und die Task Parallel Library (TPL)
Pfeil 15.1 Überblick
Pfeil 15.2 Multithreading mit der Klasse »Thread«
Pfeil 15.2.1 Einführung in das Multithreading
Pfeil 15.2.2 Threadzustände und Prioritäten
Pfeil 15.2.3 Zusammenspiel mehrerer Threads
Pfeil 15.2.4 Die Entwicklung einer einfachen Multithreading-Anwendung
Pfeil 15.2.5 Die Klasse »Thread«
Pfeil 15.2.6 Threadpools nutzen
Pfeil 15.2.7 Die Synchronisation von Threads
Pfeil 15.2.8 Der »Monitor« zur Synchronisation
Pfeil 15.2.9 Das Attribut »MethodImpl«
Pfeil 15.2.10 Das Synchronisationsobjekt »Mutex«
Pfeil 15.2.11 Grundlagen asynchroner Methodenaufrufe
Pfeil 15.2.12 Asynchroner Methodenaufruf
Pfeil 15.2.13 Asynchroner Aufruf mit Rückgabewerten
Pfeil 15.2.14 Eine Klasse mit asynchronen Methodenaufrufen
Pfeil 15.3 Die TPL (Task Parallel Library)
Pfeil 15.3.1 Allgemeines zur Parallelisierung mit der TPL
Pfeil 15.3.2 Die Klasse »Parallel«
Pfeil 15.3.3 Die Klasse »Task«
Pfeil 15.4 Asynchrone Programmierung mit »async« und »await«

Galileo Computing - Zum Seitenanfang

15.4 Asynchrone Programmierung mit »async« und »await«

In den Abschnitten 15.2.12 bis 15.2.14 haben wir uns mit den asynchronen Aufrufen von Methoden auseinandergesetzt. Mit dem .NET Framework 4.5 wurde eine weitere, gänzlich neue Variante eingeführt. Diese soll dabei helfen, asynchrone Operationen einfacher auszuführen. Dazu wurden zwei neue Schlüsselwörter für C# ins Spiel gebracht: async und await.

Ehe ich Ihnen die Zusammenhänge erläutere, möchte ich ein kleines Beispiel vorstellen.

// Beispiel: ..\Kapitel 15\AwaitSample

class Program
{
static void Main(string[] args)
{
DoSomethingAsync();
for (int i = 0; i < 1000; i++)
Console.Write(".");
Console.ReadLine();
}
static async void DoSomethingAsync()
{
Console.Write("Start");
Console.Write(await TestAsync());
}

static async Task<string> TestAsync()
{
await Task.Delay(20);
return "Fertig";
}
}

Listing 15.30 Aufruf einer »async«-Methode

Das Resultat des Aufrufs sehen Sie in Abbildung 15.11.

Abbildung

Abbildung 15.11 Ausgabe des Beispielprogramms »AwaitSample«

Bei der asynchron aufgerufenen Methode handelt es sich hier um TestAsync. Diese Methode ist mit dem in .NET 4.5 neu eingeführten Modifikator async gekennzeichnet. Um eine länger andauernde Aufgabe zu simulieren, wird innerhalb der Methode TestAsync mit Task.Delay eine Verzögerung von zwei Sekunden erzwungen. Mit async gekennzeichnete Methoden ermöglichen einem Aufrufer, seine Arbeit fortzusetzen. Er wird also nicht blockiert. Üblicherweise erhalten solche Methoden auch das Suffix Async.

Im .NET Framework 4.5 wurden zahlreichen Methoden eingeführt, die dem neuen Async-Pattern entsprechen. Die Klassen, die um solche Methoden erweitert worden sind, können hauptsächlich den Bereichen Internetzugriff, dem Lesen und Schreiben von Dateien und dem Laden von Images zugeordnet werden. Eine der typischen, neuen Methoden ist zum Beispiel GetStringAsync der Klasse HttpClient. Unsere Methode TestAsync soll nur eine der neuen asynchron operierenden Methoden des Frameworks vertreten.

async-Methoden haben einen vorgeschriebenen Rückgabewert. Er ist entweder void oder liefert den Typ Task oder Task<TResult> zurück. Unsere Stellvertretermethode TestAsync liefert Task<string> zurück. Beachten Sie dabei bitte, dass die Rückgabe mit return innerhalb der Methode tatsächlich den Typ string bereitstellt. Auch die Parameter einer async-Methode unterliegen einer Einschränkung: Sie dürfen nämlich weder ref noch out sein.

Aufgerufen wird TestAsync aus der Methode DoSomethingAsync heraus. Dabei kommt auch der neue Operator await ins Spiel. Die Aufgabe von await ist zu warten, bis der angegebene Task fertig ist. Dennoch kann der Aufrufer mit den darauf folgenden Anweisungen den Programmablauf fortsetzen, ohne blockiert zu sein.

Im Grunde genommen hätten wir auch auf DoSomethingAsync verzichten können und deren Programmcode direkt in Main codieren können. Allerdings hätten wir dann Main mit async signieren müssen, was für den Einstiegspunkt in eine Anwendung nicht erlaubt ist. Andererseits können aber Ereignishandler durchaus mit async spezifiziert werden, was dann natürlich besonders bei Anwendungen mit einer grafischen Benutzeroberfläche wieder sehr interessant wird.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.

>> Zum Feedback-Formular
<< zurück
  Zum Katalog
Zum Katalog: Visual C# 2012

Visual C# 2012
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Katalog: Windows Presentation Foundation






 Windows Presentation
 Foundation


Zum Katalog: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Katalog: C++ Handbuch






 C++ Handbuch


Zum Katalog: C/C++






 C/C++


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Rheinwerk Computing]

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de