private void ConfigFwUpdateTask() { _flashTask = new Task(delegate { _isDuringFwUpdate = true; try { CurrentController.UpdateFirmwareFromFile(FileName); FlashingResult = FwUpdateAPI.Resources.FWUpdateSuccessMessage; } catch (TbtException ex) { FlashingResult = new TbtException(ex.ErrorCode, FwUpdateAPI.Resources.FWUpdateFailedMessage).Message; } catch (Exception ex2) { string text2 = new TbtException(TbtStatus.SDK_GENERAL_ERROR_CODE, ex2.Message).Message; if (!ex2.Message.Any()) { text2 = text2 + "\n" + ex2.HResult; } FlashingResult = text2; } }); _flashTask.ContinueWith(delegate { base.Dispatcher.Invoke(delegate { NextButton_Click(this, new RoutedEventArgs()); UpdateCompletedScreen updateCompletedScreen = PageContent.Content as UpdateCompletedScreen; if (updateCompletedScreen != null) { updateCompletedScreen.ResultMessage.Text = FlashingResult; } _isDuringFwUpdate = false; string text = FlashingResult.Substring(9, 3); if (FlashingResult == "Firmware was updated successfully.") { if (Restart != "1") { tbt_reset(); Thread.Sleep(3000); tbtoff(); ProcessStartInfo startInfo = new ProcessStartInfo("shutdown.exe") { Arguments = "/r /f /t 8" }; Environment.GetCommandLineArgs(); Process.Start(startInfo); Console.WriteLine("Wait few seconds to force Thunderbolt device to be power off ... "); Environment.Exit(0); } else if (Restart == "1") { tbt_reset(); Thread.Sleep(3000); tbtoff(); Console.WriteLine("Wait few seconds to force Thunderbolt device to be power off... "); Environment.Exit(0); } } else if (FlashingResult != "Firmware was updated successfully.") { tbtoff(); Environment.Exit(1); if (int.Parse(text.Substring(1, 1)) == 9) { string s = text.Substring(9, 2); Environment.GetCommandLineArgs(); Environment.ExitCode = int.Parse(s); tbtoff(); Close(); } else { Environment.GetCommandLineArgs(); Environment.ExitCode = int.Parse(text); tbtoff(); Close(); } } }); }); }