BlackCoin's Corner

In diesem Blog dreht es sich zu 90 % um den Themenbereich C# .Net

Visual Studio Async CTP

Ein weiterer Bericht von der Basta Spring.

Diese Library gibt euch ein Vorgeschmack, auf das was in der nächsten Version des Framework kommen wird.

Die bisherigen Möglichkeiten einen Asyncronen Aufruf durchzuführen, ist mit den heutigen Mitteln zwar nicht besonders schwierig, jedoch schrecken manche Entwickler immer noch davor davor zurück, einen Vorgang asyncron durchzuführen.

Warum sollte ich Vorgänge asyncron durchführen?

Bei einem Vorgang der nur wenige Millisekunden dauert, muss ich den Vorgang nicht zwangsläufig  asyncron durchführen, jedoch sobald der Vorgang länger dauert oder nicht abzusehen ist wie lang der jeweilige Vorgang dauern könnte, sollte man es machen.

Den Fakt ist, das User Interface sollte auch während einer länger laufenden Aktion, immer bedienbar bleiben!! den so ein Dialog verstärkt das Vertrauen eines Users nicht wirklich!Reagiertnicht

Wie funktioniert das ganze

Beispiel ohne Library am Beispiel des WebClient NS: System.Net

  static void Main(string[] args)
  {
         string url = "http://www.Microsoft.de";
         var client = new WebClient();
         client.DownloadDataCompleted += client_DownloadDataCompleted;

         client.DownloadDataAsync(new Uri(url));

         //an dieser Stelle sind noch keine daten vorhanden
         Console.ReadLine();
         Console.WriteLine("<END>");
      }

      static void client_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
      {
          //jetzt kommen die Daten 

          string strData = Encoding.Default.GetString(e.Result);

          Console.WriteLine(strData);
      }
 <pre>

Durch diese paar Zeilen Code würde die UI während des Herunterladen immer zugreifbar bleiben.

Beispiel mit Library

<span class="lnum"></span>
  static void Main(string[] args)
  {
        DownloadData();

        //an dieser Stelle sind noch keine daten vorhanden
        Console.ReadLine();
        Console.WriteLine("<END>");
  }

  private async static void DownloadData()
  {
         string url = "http://www.Microsoft.de";
         var client = new WebClient();
	 //Zeile 16	 
         string strData = await client.DownloadDataAsync(new Uri(url));
		 
         Console.WriteLine(strData);
  }
 
An diesem Beispiel erkennen wir, das wir durch die beiden neuen Schlüsselwörter
async und Await das gleiche Ergebnis erreichen können.
Nur der Code sieht viel schöner aus!
 
Ja jetzt höre ich euch schon, was erreichen wir damit der Code bleibt an der Zeile 16
doch stehen bis er fertig ist, jedoch so ist es nicht.
 
Das Programm läuft genau so wie im ersten Beispiel.
 
DownloadData() wird bis zur Zeile 16 Ausgeführt und das Schlüsselwort Async bewirkt, dass das Programm 
in der Main Methode solange Fortgesetzt wird bis die Daten heruntergeladen wurden.
Sobald die Daten vorliegen, läuft das Programm dann ab Zeile 16 weiter. 
 
Link: Visual Studio Async CTP

Posted: Feb 26 2011, 04:02 von Lars Schmitt | mit no comments
Abgelegt unter: ,

Kommentare

Keine Kommentare

Kommentar abgeben

(verpflichtend) 

(verpflichtend) 

(optional)

(verpflichtend)