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
Creare alias per tipi generici e tuple in C#
Creare gruppi di client per Event Grid MQTT
Gestire la cancellazione di una richiesta in streaming da Blazor
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Utilizzare Tailwind CSS all'interno di React: installazione
Generare un hash con SHA-3 in .NET
Usare lo spread operator con i collection initializer in C#
Cancellare una run di un workflow di GitHub
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Referenziare un @layer più alto in CSS
Creare una libreria CSS universale: Clip-path