如何防止Process.start的多个实例?

时间:2016-05-18 12:29:45

标签: winforms process system.diagnostics

我的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 个答案:

没有答案