private void OnAnalysisStarted(object sender, EventArgs e) { PendingInfoResponses.Clear(); var sortedColumn = analysisDataGridView.SortedColumn; var sortedOrder = analysisDataGridView.SortOrder; AnalysisData.Clear(); if (sortedColumn != null) { analysisDataGridView.Sort( sortedColumn, sortedOrder == SortOrder.Ascending ? ListSortDirection.Ascending : ListSortDirection.Descending ); } }
private void ProcessPendingInfoReponses(object sender, System.Timers.ElapsedEventArgs e) { Dictionary <string, UciInfoResponse> responseByMove = new Dictionary <string, UciInfoResponse>(); // collect per move so we don't do updates for duplicates for (; ;) { var info = PendingInfoResponses.TryDequeue(); if (info == null) { break; } if (info.Fen != Fen) { continue; } foreach (var _ in info.Score) { // replace so we have the latest responseByMove[info.GetMoveLan()] = info; } } if (responseByMove.Count == 0) { return; } if (IsEmbedded) { var newAnalysisData = EmbeddedAnalysisData.Copy(); UpdateEmbeddedAnalysisData(newAnalysisData, responseByMove); ApplyNewEmbeddedAnalysisData(newAnalysisData); } else { var newAnalysisData = AnalysisData.Copy(); UpdateAnalysisData(newAnalysisData, responseByMove); ApplyNewAnalysisData(newAnalysisData); } }
private void OnInfoResponse(UciInfoResponse info) { PendingInfoResponses.Enqueue(info); }