Novità nella gestione del modello asincrono in C# 5 e VB 11

di Alessio Leoncini, in .NET Framework,

Async e await sono le nuove keyword che semplificano la gestione di procedure asincrone per le moderne applicazioni.

Nella giornata di ieri di PDC 2010 a Redmond, la sessione di Hejlsberg ha introdotto le future caratteristiche dei linguaggi su cui Microsoft sta lavorando per il prossimo aggiornamento.

In questi anni l'evoluzione del .NET Framework ha portato sia all'introduzione di nuove caratteristiche come Generics, LINQ o parallel framework ma anche funzionalità volte a semplificare la scrittura del codice, e quindi a ridurre i possibili errori. Tra le funzionalità più interessanti presentate nella sessione di Hejlsberg troviamo due nuove keyword: async e await che possiamo utilizzare per gestire con semplicità processi la cui durata si protrae nel tempo, lasciando inalterata l'utilizzabilità dell'applicazione.

Il paradigma del modello asincrono è già noto agli sviluppatori da diverso tempo ed è sempre più utilizzato nelle moderne applicazioni, così come le funzionalità di "operazioni concorrenti" introdotte con il parallel framework: come abbiamo detto, le due nuove keyword semplificano la gestione del patter asincrono preparando internamente un codice che utilizza le funzionalità di Task proprie del parallel framework.

L'utilizzo è molto semplice, si decora con la key async un metodo che esegue un'operazione che può protrarsi nel tempo e si antepone alla funzione interna la key await:

public async void LoadRss(Uri uri) 
{
    WebClient client = new WebClient();
    var data = await client.DownloadDataTaskAsync(uri);
        
    XDocument doc = XDocument.Parse(data);

    //...
}

L'espressione await dice al compilatore di sospendere l'esecuzione del metodo e di ritornare al chiamante, nella fattispecie DownloadStringTaskAsync è il metodo omologo a DownloadString che restituisce un Task, dove T è l'oggetto restituito dal metodo.

Proprio in virtù che il metodo restituisce un oggetto Task, questo può essere utilizzato insieme alla nuova espressione await, ed entrare nel nuovo modello di gestione.
Al termine dell'operazione, il codice riprende dalla key await come se non fosse mai uscito, quindi risulta consistente anche un'eventuale gestione try/catch.

La semplicità di utilizzo di queste nuove funzionalità apre una moltitudine di impieghi nelle nostre applicazioni; per approfondire è possibile scaricare la documentazione per C# e per VB, oltre alla libreria per Visual Studio in versione CTP.

Vuoi restare aggiornato in tempo reale su PDC10? Segui il nostro speciale!

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti