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
C# 12: Cosa c'è di nuovo e interessante
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Recuperare l'ultima versione di una release di GitHub
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Gestione degli stili CSS con le regole @layer
Change tracking e composition in Entity Framework
Migrare una service connection a workload identity federation in Azure DevOps
Paginare i risultati con QuickGrid in Blazor
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
I più letti di oggi
- Simulare Azure Cosmos DB in locale con Docker
- Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- .NET Conference Italia 2023 - Milano e Online