Populating the tree view on the background is one approach. However, if the tree is large, do you really need to add every node into the tree or just the ones user expands. Adding all nodes to the tree may cause memory issues if the tree is large and make the UI perform sluggishly.
So what I suggest is that just add the top level nodes and a placeholder as a child node for the nodes that contain children. Now when a node with a placeholder as child is expanded, add the actual children and again the placeholders for the nodes that contain children. This way the tree is populated only on needed parts.
If you're interested, I've used this approach in the following article so if you examine the code you see this in effect:
Directory size browser[
^]