private void PopulateAsync(object o) { var fse = o as BrowsingFile; if (null != fse) { var c = new Client(model.LocalNode); var cmd = new BrowseVerb(shareInfo); cmd.Path = fse.FullPath; cmd.NoCache = bvm.NoCache; if (c.Execute(cmd, client)) { SafeObservableStatic.Dispatcher.Invoke(DispatcherPriority.Normal, new Action( delegate { bvm.Status = "Download complete (" + cmd.Results.Count + ")."; fse.IsPopulated = true; fse.ClearItems(); foreach (BrowsingFile result in cmd.Results) { result.Path = fse.FullPath; fse.AddItem(result); } bvm.CurrentItem = fse; bvm.IsBusy = false; } )); } } else { var c = new Client(model.LocalNode); var cmd = new BrowseVerb(shareInfo); cmd.NoCache = bvm.NoCache; if (c.Execute(cmd, client)) { SafeObservableStatic.Dispatcher.Invoke(DispatcherPriority.Normal, new Action( delegate { bvm.Status = "Download complete (" + cmd.Results.Count + ")."; var ent = new BrowsingFile(); foreach (BrowsingFile result in cmd.Results) { bvm.Root.Add(result); ent.AddItem(result); } ent.IsPopulated = true; bvm.CurrentItem = ent; bvm.IsBusy = false; } )); } } }