Did you know that you can navigate the posts by swiping left and right?

Windows Phone und async / await

06 Aug 2012 . Unknown . Comments

Lange Zeit galt die asynchrone Programmierung als steiniges Terrain, auf dass sich nur erfahrene und/oder masochistische Entwickler freiwillig eingelassen haben. Mittlerweile gibt es jedoch ein paar Hilfsmittel im .NET-Framework, welche die asynchrone Programmierung deutlich vereinfachen und einen Großteil der früheren Komplexität nehmen. Die Rede ist von den beiden Schlüsselwörtern “async” und “await”.

await

Dieser Artikel soll jetzt nicht die beiden Schlüsselwörter erklären. Wer dazu noch Lektüre braucht kann sich die folgenden Artikel zu Gemüte führen:

Wirklich spannend wird die Verwendung von async und await in den Bereichen, in denen man nicht die Wahl hat sondern nur asynchron arbeiten kann. Und wie es der Zufall so will steht genau so ein Anwendungsfall hier über dem Artikel: Das Windows Phone Zwinkerndes Smiley

Wer bereits mit Visual Studio 2012 (RC oder RTM) arbeitet und Anwendungen für .NET 4.5 oder die neuen Metro-Style-Apps entwickelt, braucht keine weiteren Tools. Für frühere Versionen des .NET-Frameworks oder auch Silverlight braucht man jedoch das so genannte “Async Targeting Pack”. Für Nutzer von Visual Studio 2010 SP1 gibt es ein Provisorium, dass einem die meisten Vorzüge von async/await auch hier zur Verfügung stellt. Die “Visual Studio Async CTP V3” wird jedoch nicht offiziell von Microsoft unterstützt und hat ein paar bekannte Bugs. Auch wird sie nicht mehr weiterentwickelt, so dass man nach Erscheinen am besten schnellstmöglich auf die neue Version von Visual Studio updated. Solange es noch kein offizielles SDK für Windows Phone 8 gibt, hilft uns leider die Vorab-Version von VS2012 für die Entwicklung von Windows Phone Apps nicht weiter.

Man installiert also die Async CTP vom oben genannten Link, referenziert die DLL in seinem Windows Phone Projekt und schon kann es losgehen. Richtig? Naja, beinahe. Man hat Intellisense und auf den ersten Blick scheint alles zu funktionieren. Bis zu dem Zeitpunkt wenn man das Projekt builden möchte. Da fliegen einem auf einmal die seltsamsten Fehlermeldungen um die Ohren. Also alles für die Katz’? Nicht ganz, aber um das Async CTP zum laufen zu bekommen, müssen wir noch ein wenig Vorarbeit leisten.

31-07-2012 19-08-55

Zunächst einmal müssen – sofern installiert – Silverlight 5 und das .NET-Framework in der Version 4.5 deinstalliert werden. Doch damit noch nicht genug. Als nächstes müssen ein paar der Visual Studio Updates entfernt werden. Diese finden wir ebenfalls in der Systemsteuerung.

SNAGHTMLc18537b

In der Liste suchen wir nun die nachfolgenden Updates und entfernen sie. Nicht alle Updates sind auf jedem Rechner installiert, am einfachsten sucht man nach den jeweiligen Knowledge-Base Artikelnummern. Grundsätzlich sollten alle Updates für Visual Studio, die vor Oktober 2011 herauskamen, installiert sein – alle späteren jedoch nicht. Das betrifft vor allem die folgenden Updates:

  • KB2635973
  • KB2615527
  • KB2645410
  • KB2549864

Einige dieser Patches tauchen mehrfach in der Liste der Systemsteuerung auf, in dem Fall müssen alle nacheinander deinstalliert werden!

SNAGHTMLc257992

Im Anschluss können wir nun endlich die Async CTP installieren! Und sobald die erfolgreich installiert wurde, können auch alle anderen – eben deinstallierten – Updates wieder neu installiert werden, einschließlich Silverlight 5 und .NET 4.5 (RC). Und endlich kann man auch mit Visual Studio 2010 SP1 an Windows Phone Projekten arbeiten, die “async” und “await” verwenden.

Und wer jetzt noch ein wenig über die asynchrone Entwicklung mit den neuen Schlüsselworten unter Windows Phone hören möchte, dem sei das folgende (englische) Video von Alex Turner empfohlen. Smiley

Questions/Suggestions
As always, for questions or feedback, contact me or leave a comment.

Octocat by GitHubEdit this page on GitHub