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
Miglioramenti nell'accessibilità con Angular CDK
Path addizionali per gli asset in ASP.NET Core MVC
Il nuovo controllo Range di Blazor 9
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Definire stili a livello di libreria in Angular
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Effettuare il refresh dei dati di una QuickGrid di Blazor
Proteggere le risorse Azure con private link e private endpoints
Gestione dei nomi con le regole @layer in CSS
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Disabilitare automaticamente un workflow di GitHub
I più letti di oggi
- Community Night@Basta!Italia on tour 2009 - Milano
- Real Code Day - Firenze
- Real Code Conference 4.0 - Firenze
- Windows Phone r8me - Roma
- Visual Studio 2008 Team Suite in RTM su MSDN Download
- Rilasciata la prima CTP del .NET Parallel Framework
- Annunciata la modalità di uscita di ADO.NET Entity Framework e dei Data Services