Anche se ho già postato sull’argomento, ci ritorno su per fissare bene a mente alcuni concetti:
- Un’applicazione WPF parte inizialmente con due thread: quello dedicato alla User Interface (detto anche thread principale dell’applicazione) e quello relativo al rendering, che ha una priorità più alta. Ne consegue che le animazioni continueranno ad aggiornare l'interfaccia utente indipendentemente dalle operazioni eseguite dall'utente con il mouse.
- Se si vuole scrivere applicazioni WPF che mantengano una continua reattività alle azioni dell’utente, ogni attività che può durare più di 30 millisecondi (!!!) DEVE essere spostata dall’ UI thread a un “working thread”;
- Scrivere applicazioni multi-threaded non è per nulla difficile, se:
La classe BackgroundWorker fornisce tutto il necessario per eseguire attività in background mantenendo un canale di comunicazione con il thread chiamante, per poter ricevere aggiornamenti, stato di avanzamento e completamento del lavoro dal working thread, e al contempo poter richiedere al working thread l’interruzione del lavoro in corso;
Da notare che sono tutti concetti arcivecchi e stranoti. Ahimé non per me, che fino a ieri gestivo tutto dalla UI thread!