Programmazione asincrona codice misto

Sviluppando codice asincrono si tende spesso ad implementare buona parte delle funzioni sfruttando le potenzialità fornite dall’utilizzo di async ed await. Un pò come se rendere i comportamenti asincroni fosse in qualche modo “contagioso”.  Se all’interno del codice vengono sviluppate fuzioni sincrone, lo sviluppo “misto” può generare problematiche nel flusso di esecuzione e nelle performance della nostra applicazione.

La migrazione parziale di metodi in modalità asincrona, lasciandone inalterate altre può generare deadlock

Continua a leggere Programmazione asincrona codice misto

Programmazione Asincrona eccezioni multiple

Gestire eccezioni all’interno di codice asincrono non sempre porta ai risultati attesi. Analizziamo il seguente codice asincrono

Continua a leggere Programmazione Asincrona eccezioni multiple

Programmazione Asincrona e void

Uno degli errori da evitare nella programmazione asincrona in c# (tramite async e await) è quello di creare metodi che restituiscono void.

L’utilizzo di metodi asincroni che ritornano uno void (async void) introducono due tipologie di problemi:

  • non è possibile determinare quando il task è stato completato
  • le eccezioni che vengono generate al suo interno producono come risultato la terminazione del processo

Continua a leggere Programmazione Asincrona e void

Programmazione Asincrona con Async e Await

L’introduzione di async e await consente di scrivere codice asincrono, come se si trattasse di codice sincrono

Non sempre però l’utilizzo della Programmazione Asincrona con Async e Await viene utilizzata in maniera appropriata: è necessario seguire alcune linee guida per evitare di incappare in problemi non sempre di facili risoluzione.

Nei prossimi articoli tratteremo alcuni errori tipici dovuti all’utilizzo non proprio appropriato delle keyword async-await.

Continua a leggere Programmazione Asincrona con Async e Await

C# – Tuple

Se da un metodo dobbiamo ritornare più di un valore possiamo utilizzare uno dei seguenti modi:

  • utilizzare un parametro con la parola chiave out (passaggio per riferimento)
  • ritornare una struttura dati o una classe
  • ritornare un tipo anonimo tramite un tipo dinamico (sconsigliato!)

La quarta soluzione possibile sono le tuple, introdotte all’interno del framework 4.0 e referenziate all’interno di System.Tuple.

Continua a leggere C# – Tuple