[WPF] Multithreading with BackgroundWorker

Anche se ho già postato sull’argomento, ci ritorno su per fissare bene a mente alcuni concetti:

  1. 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.
  2. 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”;
  3. 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!

«gennaio»
domlunmarmergiovensab
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567