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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Collegare applicazioni server e client con .NET Aspire
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Utilizzare Azure AI Studio per testare i modelli AI
Managed deployment strategy in Azure DevOps
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Utilizzare i variable font nel CSS
Utilizzare Locust con Azure Load Testing
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Gestione file Javascript in Blazor con .NET 9
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Ricevere notifiche sui test con Azure Load Testing
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8