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
Eseguire attività con Azure Container Jobs
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Utilizzare i primary constructor in C#
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Potenziare Azure AI Search con la ricerca vettoriale
Definire stili a livello di libreria in Angular
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare un service principal per accedere a Azure Container Registry
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Usare una container image come runner di GitHub Actions
Creazione di plugin per Tailwind CSS: espandere le funzionalità del framework dinamicamente