/// <summary>
        /// Command to execute when the flash button is clicked
        /// </summary>
        private async void Flash_CommandExecute()
        {
            TargetFlashLogic.IsFlashInProgress = true;
            Flash_Command.RaiseCanExecuteChanged();

            Logger _logger = Logger.Instance;

            _logger.Clear();
            await Task.Run(() =>
            {
                TargetFlashLogic.StartFlash(SelectedComPort, SelectedBaudRate);
            });

            _logger.Log("Finish");
            Flash_Command.RaiseCanExecuteChanged();
        }
        /// <summary>
        /// the default constructor
        /// </summary>
        public MainWindowViewModel()
        {
            TargetFlashLogic = new TargetFlashLogic();
            ComPorts         = TargetFlashLogic.GetPorts();
            BaudRates        = TargetFlashLogic.GetBaudRates();

            #region Delegate Commands
            TestConnect_Command = new DelegateCommand(TestConnect_CommandExecute, TestConnect_CommandCanExecute);
            BrowseFile_Command  = new DelegateCommand(BrowseFile_CommandExecute).ObservesCanExecute(() => BrowseFile_IsEnabled);
            Flash_Command       = new DelegateCommand(Flash_CommandExecute, Flash_CommandCanExecute);
            #endregion

            #region Dispatch Timer
            // Dispatch timer for polling purposes
            System.Windows.Threading.DispatcherTimer dispatchTimer = new System.Windows.Threading.DispatcherTimer();
            dispatchTimer.Tick += (sender, e) =>
            {
                Flash_Command.RaiseCanExecuteChanged();
                TestConnect_Command.RaiseCanExecuteChanged();
            };
            dispatchTimer.Interval = new TimeSpan(0, 0, 0, 0, 10);
            dispatchTimer.Start();
            #endregion
        }
 private void TestConnect_CommandExecute()
 {
     TargetFlashLogic.TestConnection(SelectedComPort, SelectedBaudRate);
 }