Ciao Marco.
il codice è troppo lungo per essere inserito qui
Appunto .... ecco il problema.
Nella routine invocata dal Dispatcher, deve esserci SOLO il codice per l'aggiornamento degli oggetti della UI .... solo il codice che, scritto in un thread separato, ti genererebbe un'eccezione di chrossthreading.
Tutto il resto lo DEVI fare nel BackGroundWorker....

Facci sapere...
Ciao