private void panel_ProgressChanged(object sender, ProgressChangedEventArgs e) { LineTiming lineTiming = (LineTiming)e.UserState; int index = panelLines.IndexOf(lineTiming); if (index == -1) { // It's a new line bus coming soon here if (lineTiming.Timing == TimeSpan.Zero) { return; } panelLines.Add(lineTiming); panelLines.Sort((lnTime1, lnTime2) => (int)(lnTime1.Timing - lnTime2.Timing).TotalMilliseconds); } else { if (lineTiming.Timing == TimeSpan.Zero) { panelLines.Remove(lineTiming); } else { panelLines.Sort((lt1, lt2) => (int)(lt1.Timing - lt2.Timing).TotalMilliseconds); } } lineTimingListView.ItemsSource = null; int count = (panelLines.Count < 5) ? panelLines.Count : 5; lineTimingListView.ItemsSource = panelLines.GetRange(0, count); }
private void stationObserver(LineTiming lineTiming) => panelWorker.ReportProgress(0, lineTiming);