public void Load(FrameGroup group, EventDescription desc) { if (Group == group && Description == desc) { return; } Group = group; Description = desc; Task.Run(() => { Application.Current.Dispatcher.BeginInvoke(new Action(() => { IsLoading = true; })); FunctionStats frameStats = null; if (group != null && desc != null) { frameStats = new FunctionStats(group, desc); frameStats.Load(Origin); } OnLoaded(frameStats); }); }
public virtual void OnLoaded(FunctionStats stats) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { Stats = stats; IsLoading = false; OnChanged?.Invoke(); })); }
public override void OnLoaded(FunctionStats frameStats) { ObservableCollection <FunctionSummaryItem> items = GenerateSummaryItems(frameStats); Application.Current.Dispatcher.BeginInvoke(new Action(() => { SummaryItems = items; })); base.OnLoaded(frameStats); }
private ObservableCollection <FunctionSummaryItem> GenerateSummaryItems(FunctionStats frameStats) { ObservableCollection <FunctionSummaryItem> items = new ObservableCollection <FunctionSummaryItem>(); if (frameStats != null) { items.Add(new MinMaxFunctionSummaryItem(frameStats.Samples.Select(s => s.Total)) { Icon = (Style)Application.Current.FindResource("appbar_timer"), Name = "Time\\Frame(ms)", Description = "Total duration of the function per frame in milliseconds", Foreground = Brushes.White, }); items.Add(new MinMaxFunctionSummaryItem(frameStats.Samples.Select(s => s.Work)) { Icon = (Style)Application.Current.FindResource("appbar_timer_play"), Name = "Work\\Frame(ms)", Description = "Total work time of the function per frame in milliseconds (excluding synchronization and pre-emption)", Foreground = Brushes.LimeGreen, }); items.Add(new MinMaxFunctionSummaryItem(frameStats.Samples.Select(s => s.Wait)) { Icon = (Style)Application.Current.FindResource("appbar_timer_pause"), Name = "Wait\\Frame(ms)", Description = "Total wait time of the function per frame in milliseconds (synchronization and pre-emption)", Foreground = Brushes.Tomato, }); items.Add(new MinMaxFunctionSummaryItem(frameStats.Samples.Select(s => (double)s.Count)) { Icon = (Style)Application.Current.FindResource("appbar_cell_function"), Name = "Calls\\Frame", Description = "Average number of calls per frame", Foreground = Brushes.Wheat, }); items.Add(new HyperlinkFunctionSummaryItem() { Icon = (Style)Application.Current.FindResource("appbar_page_code"), Name = "File", Description = "Open Source Code", Path = frameStats.Description.Path, }); } return(items); }