public void Refresh() { int year = DateTime.Now.Year; int month = DateTime.Now.Month; if (CBYear.SelectedValue != null && CBMonth.SelectedValue != null) { year = (int)CBYear.SelectedValue; month = (int)CBMonth.SelectedValue; } if (LoadTask == null || LoadTask.IsCompleted) LoadTask = Task.Factory.StartNew(() => { var datas = WakaAnalyzer.Month.Report(year, month); if (ListTool.HasElements(datas)) { var first = datas.FirstOrDefault(); if (first != null && ListTool.HasElements(first.Item2)) { List<DateTime> dt = first.Item2.OrderBy(x => x.Item1).Select(x => x.Item1).ToList(); List<string> lb = new List<string>(); dt.ForEach(x => { lb.Add(x.ToString("dd日")); }); var career = WakaAnalyzer.Month.Career(year, month); var careerFmt = DateTimeTool.ToHMS(career); var avgFmt = DateTimeTool.ToHMS(career / DateTool.MonthDays(year, month)); App.Current.Dispatcher.Invoke((Action)(() => { Labels = lb.ToArray(); TimeDesc = $"{year} 年 {month} 月,共计:{careerFmt.Item1} 时 {careerFmt.Item2} 分,日均:{avgFmt.Item1} 时 {avgFmt.Item2} 分"; })); } App.Current.Dispatcher.Invoke(() => { Formatter = value => { if (value > 0) { StringBuilder sb = new StringBuilder(); var time = DateTimeTool.ToHMS(value); if (time.Item1 > 0) sb.Append($"{time.Item1} 小时"); if (time.Item2 > 0) sb.Append($" {time.Item2} 分钟"); return sb.ToString(); } return null; }; }); SeriesCollection = new SeriesCollection(); datas.ForEach(x => { string title = x.Item1; double[] values = x.Item2.OrderBy(y => y.Item1).Select(y => y.Item2).ToArray(); App.Current.Dispatcher.Invoke((Action)(() => { SeriesCollection.Add( new StackedColumnSeries { Title = title, Values = new ChartValues<double>(values), StackMode = StackMode.Values }); })); }); } }); }