Как переключиться между потоками в c# .net, что бы обновить GUI?
Еще такой вариант:this.Invoke(new Action(() =>
 {
    //  работа с treeView
}));
Можно использовать SynchronizationContext
Пример:// Инициализируете в UI потоке
synchContext = AsyncOperationManager.SynchronizationContext;
// Затем из потоков
synchContext.Post(OnComplete, data);
// Где OnComplete уже будет выполняться в контексте UI