Как предотвратить несколько экземпляров 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;
        }
    }

0 ответов

Другие вопросы по тегам