Brauchst du einen inkrementellen Aufbau des TreeViews? Wenn nein: Hänge die Root-Nodes einfach erst am Schluss im Hauptthread (WorkCompleted-Event) in den TreeView ein. Wenn ja, wirst du jeden Add-Aufruf in Control.BeginInvoke wrappen müssen.
PS: Parameter und lokale Variablen bitte klein schreiben. Und sieht nicht so aus, als ob du wirklich zwischen BasePath und SubPath trennen müsstest
. Bzw. wenn du schon mit DirectoryInfo arbeitest (würde auch mit den statischen Directory-Methoden gehen), übergebe die doch rekursiv.