/// <summary> /// /// </summary> /// <param name="obj"></param> private void SearchCommandFunc(object obj) { SearchSchemaModel searchData = obj as SearchSchemaModel; ThirftService thrift = new ThirftService(); long startDate = ConvertTime.ConvertTimeToLongData(true, searchData.StartDateValue, searchData.StartTimeIndex, searchData.StartMinute); long endDate = ConvertTime.ConvertTimeToLongData(false, searchData.EndDateValue, searchData.EndTimeIndex, searchData.EndMinute); //LoadingVisiblity = Visibility.Visible; if (searchData.TemplateStoreIndex == 0) { IsSnapStore = Visibility.Collapsed; Task task = QueryResultFromTemplateStore(thrift, startDate, endDate, searchData); } else { IsSnapStore = Visibility.Visible; Task task = QueryResultFromSanpStore(thrift, startDate, endDate); } //LoadingVisiblity = Visibility.Collapsed; //OnPropertyChanged("LoadingVisiblity"); }
async Task <IList <CameraSnapPerson> > AsyncGetTargetAnalysisResult(ThirftService thrift, string capid, byte[] capimg, int threshold, long btime, long etime) { LoadingVisiblity = Visibility.Visible; return(await Task.Run(() => { return thrift.GetTargetAnalysisResult(string.Empty, ForTargetPage.PhotoByteArray, -1, btime, etime); }).ConfigureAwait(false)); }
/** * 解决方案: * 使用异步查询数据,等待数据返回后执行主线程 * * **/ #region No Target /// <summary> /// /// </summary> /// <param name="thrift"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <returns></returns> async Task <List <TargetedAnalysis> > AsyncSelectNoTargetForMap(ThirftService thrift, long startTime, long endTime) { LoadingVisiblity = Visibility.Visible; return(await Task <List <TargetedAnalysis> > .Run(() => { return thrift.GetNoTargetAnalysisResultForMap(startTime, endTime); }).ConfigureAwait(false)); }
async Task <IList <TmpSnapInfo> > AsyncSelectNoTargetForSusipcious(ThirftService thrift, long startTime, long endTime) { return(await Task <IList <TmpSnapInfo> > .Run(() => { CameraSnapPerson suspectObj = new CameraSnapPerson(); IList <TmpSnapInfo> result = thrift.GetNoTargetAnalysisResult(ref suspectObj, startTime, endTime); tempSuspectObject = suspectObj; return result; }).ConfigureAwait(false)); }
/// <summary> /// /// </summary> /// <param name="thrift"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> async void GoNoTarget(ThirftService thrift, long startTime, long endTime) { List <TargetedAnalysis> formapResult = new List <TargetedAnalysis>(); IList <TmpSnapInfo> forsuspectResult = new List <TmpSnapInfo>(); SusipciousInfo = new CameraSnapPerson(); await Task.Run(() => { LoadingVisiblity = Visibility.Visible; OnPropertyChanged("LoadingVisiblity"); formapResult = formapResult = AsyncSelectNoTargetForMap(thrift, startTime, endTime).Result; forsuspectResult = AsyncSelectNoTargetForSusipcious(thrift, startTime, endTime).Result; }); try { NoTargetControlContent.MainMap.Points = GMapForWpf.SetMapAnchor <TargetedAnalysis>(formapResult, new Uri("pack://application:,,,/Images/home-icon-bluecamera.png")); if (NoTargetControlContent.MainMap.Points.Count > 0) { NoTargetControlContent.MainMap.CurrentPosition = NoTargetControlContent.MainMap.Points[NoTargetControlContent.MainMap.Points.Count - 1].Point; } else { NoTargetControlContent.MainMap.CurrentPosition = new GMap.NET.PointLatLng(GlobalCache.Latitude, GlobalCache.Longitude); } if (forsuspectResult.Count > 0) { var temp = tempSuspectObject; //SusipciousInfo = temp;//给SusipciousInfo赋值,导致异常 if (temp.PhotoByteArray.Length == 0) { Dispatcher.CurrentDispatcher.Invoke(() => { SusipciousInfo.Photo = ImageConvert.ToImageSource("pack://application:,,,/Images/unkonw.png"); OnPropertyChanged("SusipciousInfo"); }); } } } catch (Exception ex) { Logger <MainControlViewModel> .Log.Error("GoNoTarget", ex); } finally { LoadingVisiblity = Visibility.Collapsed; } }
/// <summary> /// /// </summary> /// <param name="thrift"></param> /// <param name="start"></param> /// <param name="end"></param> /// <returns></returns> async Task QueryResultFromSanpStore(ThirftService thrift, long start, long end) { await Task.Run(() => { LoadingVisiblity = Visibility.Visible; IList <CameraSnapPerson> result = thrift.SC_GetAnalysisResult(SearchSchemaDatas.CaptureId, SearchSchemaDatas.ImportImageByteArray, start, end, SearchSchemaDatas.ThresholdValue, SearchSchemaDatas.AppearCountValue, "抓拍库"); TemplatePersonItems = result; DataCount = TemplatePersonItems.Count; LoadingVisiblity = Visibility.Collapsed; }).ConfigureAwait(false); }
/// <summary> /// 点击登录按钮 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Button_Click(object sender, RoutedEventArgs e) { IThirtfService its = new ThirftService(); try { if (its.Login(IP.Text.ToString().Trim(), int.Parse(Port.Text.Trim()))) { if (isAutoLOgin == "0") { autoLogin.Stop(); } RemberIPAndPort(); ClientType = ConfigurationManager.AppSettings["功能选择"]; ClientArea = Convert.ToInt32(ConfigurationManager.AppSettings["所属区域"]); BasicInfo.SetBasicInfo(); foreach (var config in BasicInfo.ConfigList) { if (config.AreaType == ClientArea) { ClientAreaName = config.AreaName; } } MainWindow _mainWindow = new MainWindow(); this.Hide(); _mainWindow.Show(); } else { if (isAutoLOgin != "0") { MessageBox.Show("失败"); } } } catch (Exception ex) { MessageBox.Show("登录失败"); _WriteLog.WriteToLog("登录失败", ex.Message); } }
/// <summary> /// /// </summary> /// <param name="obj"></param> void SearchCommandFunc(object obj) { SearchSchemaModel searchData = obj as SearchSchemaModel; long startTime = ConvertTime.ConvertTimeToLongData(true, searchData.StartDateValue, searchData.StartTimeIndex, searchData.StartMinute); long endTime = ConvertTime.ConvertTimeToLongData(false, searchData.EndDateValue, searchData.EndTimeIndex, searchData.EndMinute); try { ThirftService thrift = new ThirftService(); if (searchData.IsTargetValue == "有目标分析") { GoTarget(thrift, startTime, endTime); } else { GoNoTarget(thrift, startTime, endTime); } } catch (Exception) { } }
/// <summary> /// /// </summary> /// <param name="thrift"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <returns></returns> async void GoTarget(ThirftService thrift, long startTime, long endTime) { try { ChartValues <double> chartVals = new ChartValues <double>(); if (ForTargetPage != null && ForTargetPage.PhotoByteArray.Length > 0) { await Task.Run(() => { SnapPersonItems = AsyncGetTargetAnalysisResult(thrift, string.Empty, ForTargetPage.PhotoByteArray, -1, startTime, endTime).Result; }); Parallel.Invoke( () => { ArrayList array = new ArrayList(); #region LiveCharts for (int i = 0; i < 10; i++) { int count = SnapPersonItems.Count; if (count > i) { chartVals.Add(Convert.ToDouble(SnapPersonItems[i].CameraInfo.SnapPersonCount)); array.Add(SnapPersonItems[i].Name); } else { chartVals.Add(0); array.Add("区域" + i.ToString()); } } var s = Enumerable.Reverse <string>(array.Cast <string>().ToList()); CameraForLiveCharts = s.ToList(); ChartValues <double> cv = new ChartValues <double>(); for (int i = chartVals.Count - 1; i >= 0; i--) { cv.Add(chartVals[i]); } initBarCharts(false, cv); #endregion }, () => { }); #region To map anchor ObservableCollection <PointLatLngImg> Points = GMapForWpf.SetMapAnchor <CameraSnapPerson>(SnapPersonItems, ForTargetPage.PhotoByteArray, ForTargetPage.Name); var p = Enumerable.Reverse <PointLatLngImg>(Points); TargetControlContent.MainMap.Points = p as ObservableCollection <PointLatLngImg>; if (TargetControlContent.MainMap.Points.Count > 0) { TargetControlContent.MainMap.CurrentPosition = TargetControlContent.MainMap.Points[TargetControlContent.MainMap.Points.Count - 1].Point; } else { TargetControlContent.MainMap.CurrentPosition = new GMap.NET.PointLatLng(GlobalCache.Latitude, GlobalCache.Longitude); } #endregion } } catch (Exception ex) { Logger <MainControlViewModel> .Log.Error("GoTarget", ex); } finally { LoadingVisiblity = Visibility.Collapsed; } }