Miesięczne archiwum: Grudzień 2011

async i await

Async i await są to słowa kluczowe z C# 5.0 (.NET 4.5) które umożliwiają w łatwy sposób asynchroniczne wywoływanie metod.

Async – przedrostek w metodzie deklarujący, że metoda będzie zawierała asynchroniczne wywołania.

Await – poprzedza wywoływane zadanie które chcemy aby działało asynchroniczne.

Warto wiedzieć, że bez async w metodzie nie będziemy mogli w jej ciele użyć await. Natomiast w drugą stronę, jeśli zdefiniujemy async, a w ciele metody nie będzie await kod będzie działał, z tym, że normalnie – synchronicznie, a nie tak jak zadeklerowaliśmy asynchronicznie. Do momentu wywołania polecenia await metoda działa synchronicznie.

Task umożliwia nam zwrócenie wartości z asynchronicznej metody. Jeśli to zrobimy musimy asynchroniczną metodę wywołać inną asynchroniczną metodą. Przykład poniżej:

Oczywiście nie można zamiast Task<bool> użyć samego bool bo kompilator nie będzie wiedział o co chodzi. Podejrzewam, że nie tylko kompilator 😉

Trochę to jak incepcja, ale warto wiedzieć, na bank się przyda, a jaka wygoda w porównaniu do ThreadPool i BeginInvoke 🙂

Gdyby komuś było mało to tutaj link do źródeł: http://msdn.microsoft.com/en-us/library/hh156513.aspx