Mit der nächsten .Net Version wird eine deutliche Vereinfachung der asynchronen Programmierung einher gehen.

C# und VB.Net werden um die Schlüsselwörter async und await erweitert. Async markiert eine Methode oder einen Lambda Ausdruck und await wartet auf den Abschluss eines Tasks ohne zu blockieren.

Beispiel:

public async void ProcessPage(Uri url)
{
  Task<string> downloader =  new WebClient().DownloadStringTaskAsync(url);
  string pageData = await downloader;
  // ... process ...
}

Await erlaubt es asynchronen Code so zu schreiben, das die eigentliche Programmlogik nicht mehr unter Tonnen von boilerplate Code verborgen ist.

Eines der wesentlichen Konzepte für die Benutzung von async und await ist die Task Struktur, die mit .Net 4 eingeführt wurde. Task ist eine Repräsentation des asynchronen Vorgangs. Task ist das Handle mit dem man auf den Vorgang zugreifen kann. Es ist nicht der Thread und es ist nicht das Resultat des Vorgangs. Task bietet Zugang zum Status des Vorgangs, zum Ergebnis und zu evtl. Fehlern.

Microsoft bietet eine CTP zum Download an, mit der man die neuen Keywords ausprobieren kann. (s.u.) Auf dieser Seite findet man auch die wichtigsten Links u.a. zu sehr informativen Videos auf Channel 9. Zusammen mit der CTP werden eine Reihe Dokumente installiert und jede Menge Beispiele. Das wichtigste ist das 101 Async Samples. Ein wahrer Schatz! Danke Microsoft, diese Samples erleichtern den Einstieg so sehr.

Links

Visual Studio Async CTP http://msdn.microsoft.com/en-us/vstudio/async.aspx

Async Readme (wird mit Async CTP installiert unter My Documents > Microsoft Visual Studio Async CTP)

Eric Lippert‘s Blog http://blogs.msdn.com/b/ericlippert/

Jon Skeet‘s Blog http://msmvps.com/blogs/jon_skeet/default.aspx

Slides zum Vortrag

Advertisements