public void DoCalcTree() { CallbackDelegate callback = new CallbackDelegate(UpdateStatus); SCWrapper scWrp = new SCWrapper(vm.teamExplorer); List <SCFolder> selectedFld = vm.RootFolder.Folders[0].Folders.FindAll(delegate(SCFolder f) { return(f.IsSelected); }); for (int i = 0; i < selectedFld.Count; i++) { SCFolder fld = selectedFld[i]; Dispatcher.Invoke(callback, System.Windows.Threading.DispatcherPriority.Background, new object[] { i * 100, fld.FolderPath }); scWrp.CalcSize(ref fld); fld.SetInclusiveSize(); } vm.RootFolder.Folders[0].SetInclusiveSize(); Dispatcher.Invoke(callback, System.Windows.Threading.DispatcherPriority.Background, new object[] { 100 * selectedFld.Count, "Done" }); }