В моем приложении у меня есть две кнопки:
void Install_1_Click(object sender , RoutedEventArgs e)
{
RunSilentSetup("C:\app1.exe");
}
.
.
.
void Install_2_Click(object sender , RoutedEventArgs e)
{
RunSilentSetup("C:\app2.exe");
}
и метод запуска установки:
void RunSilentSetup(string executableFilePath)
{
//code that runs the setup goes here
}
Проблема: если пользователь нажимает одну кнопку и сразу нажимает вторую, выдается ошибка, которую я не могу установить одновременно.
Мой вопрос: я хочу, чтобы второй вызов метода RunSilentSetup
ожидал до тех пор, пока первый вызов не завершится, как мне этого добиться?
изменить код установки:
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = true;
startInfo.FileName = executableFilePath;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "/s /v/qn";
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
int exitcode = exeProcess.ExitCode;
if (exitcode == 0)
this.Dispatcher.Invoke(() =>
{
ShowMessage(_vm.ShowSuccess , "Installation was successfully completed");
});
else
this.Dispatcher.Invoke(() =>
{
ShowMessage(_vm.ShowError , $"one or more errors occurred during the installation, exit code: {exitcode}");
});
}
} catch (Exception ex)
{
log.Warn(ex);
}