async void SearchResult(object sender, RoutedEventArgs e, ObservableCollection <PointLatLngImg> Points) { LoadingVisiblity = Visibility.Visible; await Task.Run(() => { long start = DateTimeConvert.ToTotalSeconds(true, StartDay, StartHour, StartMinute); long end = DateTimeConvert.ToTotalSeconds(false, EndDay, EndHour, EndMinute); try { List <TrackInfo> TrackInfos = new List <TrackInfo>(); if (SnapPersonInfo != null) { TrackInfos = AsyncSelectTrack(SnapPersonInfo.SnapId, SnapPersonInfo.PhotoByteArray, start, end).Result; //thirft.QueryTrackPlayback(SnapPersonInfo.SnapId, SnapPersonInfo.PhotoByteArray, start, end); } else { comServer.SocketOpter.ExceptionMsgFromSTAThread("请添加照片"); } this.LoadData(TrackInfos);//async foreach (TrackInfo item in TrackInfos) { PointLatLngImg ipoint = new PointLatLngImg(); if (!string.IsNullOrEmpty(item.Latitude) && !string.IsNullOrEmpty(item.Longitude)) { ipoint.Point = new GMap.NET.PointLatLng(Convert.ToDouble(item.Latitude), Convert.ToDouble(item.Longitude)); } ipoint.Img = ImageConvert.ToBitmapImage(SnapPersonInfo.PhotoByteArray); ipoint.ImgVisibility = Visibility.Visible; ipoint.ImgframeVisibility = Visibility.Visible; Points.Add(ipoint); } if (TrackInfos.Count > 0) { this.MainMap.IsDisplayPolyline = true; this.MainMap.Points = Points; if (MainMap.Points.Count > 0) { MainMap.CurrentPosition = MainMap.Points[MainMap.Points.Count - 1].Point; } else { MainMap.CurrentPosition = new GMap.NET.PointLatLng(GlobalCache.Latitude, GlobalCache.Longitude); } } else { this.MainMap.IsDisplayPolyline = true; this.MainMap.Points = new ObservableCollection <PointLatLngImg>(); } } catch (Exception ex) { Logger <MainTraceAnalysisView> .Log.Error("SearchResult", ex); } finally { LoadingVisiblity = Visibility.Collapsed; } }); }