Mamma mia che flame (che poi poteva aver ragione "sul momento", della serie compila esegui e va bene ma se bastasse questo a dire che un programa, magari grosso, è robusto..).

tornando a noi, trattandosi di una treeview mi vine in mente che la stessa la voresti popolare DURANTE il lavoro e non solo alla fine. Per questo dovresti usare reportprogress e onprogresschanged. E dentro quest'ultimo evento che il bgw torna al thread principale e ti consente di "toccare" i contolli. Reportprogress invece lo chiami da DoWork.
L'esempio qui è semplicissimo: MSDN ESEMPIO lascia stare la parte xaml se non la capisci il codebheind parla da solo.