Sfruttare le keyword async e await nelle pagine di ASP.NET Web Forms 4.5

di Marco De Sanctis, in ASP.NET 4.5,

Già dalla versione 2.0, ASP.NET Web Forms consente di sfruttare metodi asincroni all'interno delle pagine marcate con l'attributo Async="true":

<%@ Page Title="Home Page" Async="true" Language="C#" ... %>

Come abbiamo bisto nello script 1033, dal .NET Framework 4.0 è già possibile modellare le operazione asincrone tramite la Task Parallel Library, e in particolare la classe Task. Il codice da scrivere è, però, tutt'altro che intuitivo, perché bisogna implementare una coppia di metodi e gestire, all'interno di essi, lo startup e il termine di queste invocazioni:

private IAsyncResult BeginProcess(object sender, EventArgs e, 
  AsyncCallback callback, object data)
{
  // altro codice qui ..
  return BeginDoingAsyncWork(callback, data);
}

private void EndProcess(IAsyncResult result)
{
  // altro codice qui ..
  var result = EndDoingAsyncWork(result);
}

Con l'avvento del .NET Framework 4.5 e delle keyword async/await, questo modello è stato rivisto ed è sicuramente molto più semplice. In particolare, ora è sufficiente marcare un gestore di un evento come async e, al suo interno, invocare metodi asincroni sfruttando la parola chiave await.

public partial class _Default : Page
{        
  protected async void Page_Load(object sender, EventArgs e)
  {
    string result = await SomeAsyncClass.LongMethodAsync();
    this.lblResult.Text = result;
  }
}

Ovviamente, anche in questo caso, è necessario impostare per la pagina l'attributo Async="true", altrimenti otterremo un errore a runtime.

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

I più letti di oggi