private bool dispatchRecvMsg(APISpectrum apiSpec) { // Handle messages received from network try { // Session spectrum received successfully Spectrum spec = new Spectrum(apiSpec); // Normal session spectrum received log.Info(spec.Label + " received"); // Add spectrum to session if (session != null && session.IsLoaded && session.Name == spec.SessionName) { session.Add(spec); // Add spectrum to UI list bool updateSelectedIndex = false; if (lbSession.SelectedIndex == 0) { updateSelectedIndex = true; } int index = 0, last_index = 0; for (int i = 0; i < lbSession.Items.Count; i++) { Spectrum s = lbSession.Items[i] as Spectrum; last_index = s.SessionIndex; if (last_index < spec.SessionIndex) { index = i; break; } } if (last_index > spec.SessionIndex) { lbSession.Items.Add(spec); } else { lbSession.Items.Insert(index, spec); } if (updateSelectedIndex) { lbSession.ClearSelected(); lbSession.SetSelected(0, true); } // Notify external forms about new spectrum parent.AddSpectrum(spec); if (session.Spectrums.Count == 1) { parent.PositionMap(spec.Latitude, spec.Longitude); } if (progress.Value < progress.Maximum) { progress.Value++; } if (progress.Value >= progress.Maximum) { progress.Visible = false; } } } catch (Exception ex) { log.Error(ex.Message, ex); return(false); } return(true); }