void imager_m_imagerEvent(object sender, ImagerEventArgs e) { // use invoke here to make sure the code below runs on UI thread (sometimes this event is raised from non-UI threads) Application.Current.Dispatcher.Invoke(() => { switch (e.State) { case ImagerState.Idle: QuitPB.IsEnabled = true; break; case ImagerState.Error: QuitPB.IsEnabled = true; break; case ImagerState.Busy: QuitPB.IsEnabled = false; break; } }); // END Invoke }
void m_imager_m_imagerEvent(object sender, ImagerEventArgs e) { // use invoke here to make sure the code below runs on UI thread (sometimes this event is raised from non-UI threads) Application.Current.Dispatcher.Invoke(() => { switch (e.State) { case ImagerState.Idle: if (vm.IsOptimizing) { ImageGrid.Children.Remove(m_spinner); vm.IsOptimizing = false; if (m_imager.OptimizationResult_Success) { vm.Exposure = m_imager.OptimizationResult_Exposure; vm.EMGain = m_imager.m_camera.m_cameraParams.EMGain; vm.PreAmpGainIndex = m_imager.m_camera.m_cameraParams.PreAmpGainIndex; vm.Binning = m_imager.m_camera.m_acqParams.HBin; CalculateTimings(); } else { MessageBox.Show("Optimization Failed"); } TakePicturePB_Click(null, null); } TakePicturePB.IsEnabled = true; OptimizePB.IsEnabled = true; ExcitationFilterCB.IsEnabled = true; EmissionFilterCB.IsEnabled = true; BinningCB.IsEnabled = true; CycleTime.IsEnabled = true; PreAmpGainCombo.IsEnabled = true; Exposure.IsEnabled = true; EMGain.IsEnabled = true; ApplyMaskCkBx.IsEnabled = true; SignalTypeGroupBox.IsEnabled = true; CameraSettingsCB.IsEnabled = true; StartVideoPB.IsEnabled = true; StartVideoPB.Content = "Start Video"; OptimizePB.Content = "Optimize"; SaveImagePB.IsEnabled = true; FlatFieldCorrectionCB.IsEnabled = true; WellSelectionPB.IsEnabled = true; m_imager.m_kineticImagingON = false; ErrorText.Text = "Ready"; ErrorText.Foreground = new SolidColorBrush(Colors.Green); break; case ImagerState.Error: ErrorText.Text = e.Message; ErrorText.Foreground = new SolidColorBrush(Colors.Red); break; case ImagerState.Busy: ErrorText.Text = "Busy"; ErrorText.Foreground = new SolidColorBrush(Colors.Green); break; } }); // END Invoke }