如何阻止进程多次运行

kap*_*pil 4 c# winforms

我正在使用我的Windows窗体应用程序.我使用以下代码在按钮单击事件上启动计算器进程:

System.Diagnostics.Process.Start("calc.exe");
Run Code Online (Sandbox Code Playgroud)

如果我再次单击该按钮,则启动另一个计算器进程.那么如何阻止该进程多次运行呢?

谢谢

Chr*_*ler 5

容易...禁用按钮,直到过程终止.当然,你也可以提出某种逻辑:

if(!myProcess.HasExited)
{
  alert("You've already started the calculator app.");
}
else
{
  // start the process
}
Run Code Online (Sandbox Code Playgroud)

就个人而言,我喜欢前者.只需设置一个事件处理程序并设置:

Process.EnableRaisingEvents = true;
Run Code Online (Sandbox Code Playgroud)

当计算器应用程序退出时,将提升事件处理程序,让您的程序知道,因此它可以重新启用按钮.

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.enableraisingevents.aspx

try
{
    myProcess.EnableRaisingEvents = true;
    myProcess.Exited += new EventHandler(myProcess_Exited);
    myProcess.Start();
    // disable button
}
catch()
{
    // enable button
}


private void myProcess_Exited(object sender, System.EventArgs e)
{
    // enable button
}
Run Code Online (Sandbox Code Playgroud)