void LoadData() { AdornerLayer layer = AdornerLayer.GetAdornerLayer(this); OverlayAdorner ad = new OverlayAdorner(this); WaitBar bar = new WaitBar(Translation.WaitBarText); ad.Child = bar; layer.Add(ad); int rangeStart = RangeStart; int rangeEnd = RangeEnd; string query = CurrentQuery; ProfilingDataProvider provider = Provider; QueryCompiler compiler = new QueryCompiler(Reporter, query); ringDiagram.SelectedRoot = null; task.Execute(() => LoadWorker(provider, compiler, rangeStart, rangeEnd), list => LoadCompleted(list, layer, ad), delegate { layer.Remove(ad); }); }
static HierarchyList<CallTreeNodeViewModel> LoadWorker(ProfilingDataProvider provider, QueryCompiler compiler, int rangeStart, int rangeEnd) { try { if (compiler.Compile()) { IEnumerable<CallTreeNode> data = compiler.ExecuteQuery(provider, rangeStart, rangeEnd); #if DEBUG data = data.WithQueryLog(Console.Out); #endif var nodes = data.Select(i => new CallTreeNodeViewModel(i, null)).ToList(); return new HierarchyList<CallTreeNodeViewModel>(nodes); } } catch (ObjectDisposedException) { return null; } return null; }
static HierarchyList<CallTreeNodeViewModel> LoadWorker(ProfilingDataProvider provider, QueryCompiler compiler, int rangeStart, int rangeEnd) { try { if (compiler.Compile()) { var data = compiler.ExecuteQuery(provider, rangeStart, rangeEnd); var nodes = data.Select(i => new CallTreeNodeViewModel(i, null)).ToList(); return new HierarchyList<CallTreeNodeViewModel>(nodes); } } catch (ObjectDisposedException) { return null; } return null; }