Как предотвратить несколько экземпляров Process.start?
У меня есть кнопка на моем WinForm. Код работает отлично, пока я не наблюдал за своими тестовыми пользователями.
Они не ждут запуска PDF. Вместо этого они щелкают по нему несколько раз (вызывая запуск нескольких экземпляров программы чтения Acrobat.
private void pictureBoxNewsLetter_Click(object sender, EventArgs e)
{
lockControls();
launchNewsLetter();
unlockControls();
}
private void launchNewsLetter()
{
// Newsletter
lockControls();
ProcessStartInfo psi = new ProcessStartInfo(@"Y:\Newsletter.pdf");
Process ps = new Process { StartInfo = psi };
ps.Start();
ps.WaitForExit();
Thread.Sleep(1000);
unlockControls();
}
--- Код для отключения моего контроля.
private void lockControls()
{
dontRunHandler = false;
foreach (var pb in this.Controls.OfType<PictureBox>())
{
pb.Enabled = false;
}
}
private void unlockControls()
{
dontRunHandler = true;
foreach (var pb in this.Controls.OfType<PictureBox>())
{
pb.Enabled = true;
}
}