如何确定进程对象是否正在运行

发布于 2024-11-17 15:16:06 字数 542 浏览 3 评论 0原文

虽然 googlin 我只有如何获取所有进程的信息,存储到 Process[] 中,但我需要的是:

Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();

下面我创建了一个进程对象,现在我需要确切地知道这个进程是否已关闭这是因为如果用户关闭并且如果我尝试使用代码 proc.Exit(); 它会抛出 Exception 。

到目前为止我正在做这样的事情:

    Process procs = new Process();
    Process[] proc = Process.GetProcesses();
    foreach (Process p in proc)
    {
        if (p.Id = procs.Id)
        { 
            //Do Something
            break;
        }
    }

While googlin im having only Information how to get All Processes ,store into Process[] ,but what i need is :

Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();

Below i created a Process Object ,now i need to know if this Process is Closed ,exactly this one because if User Closes and if i try from Code proc.Exit(); it throws an Exception .

So far im doing like :

    Process procs = new Process();
    Process[] proc = Process.GetProcesses();
    foreach (Process p in proc)
    {
        if (p.Id = procs.Id)
        { 
            //Do Something
            break;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦境 2024-11-24 15:16:06

只需使用 HasExited 在您的 Process 对象上:

Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();

// do something

if(proc.HasExited)
    // notepad was closed

或者,如果您希望在进程关闭后立即收到通知,请使用 退出事件:

Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Exited += ProcessExited;
proc.Start();

private void ProcessExited(object sender, EventArgs e)
{
    // notepad was closed
}

Just use HasExited on your Process object:

Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Start();

// do something

if(proc.HasExited)
    // notepad was closed

Or, if you want to be notified as soon as the process has been closed, use the Exited event:

Process proc = new Process();
proc.startInfo.FileName = "notepad.exe";
proc.Exited += ProcessExited;
proc.Start();

private void ProcessExited(object sender, EventArgs e)
{
    // notepad was closed
}
感性不性感 2024-11-24 15:16:06

添加这一行:

proc.Exited += new EventHandler(proc_Exited);

然后这样的方法:

void proc_Exited(object sender, EventArgs e)
{
    //process has ended..
}

您可以拥有自己的全局标志,并在处理程序中引发它或“实时”处理它取决于您的最终目标是什么。

Add this line:

proc.Exited += new EventHandler(proc_Exited);

Then such method:

void proc_Exited(object sender, EventArgs e)
{
    //process has ended..
}

You can have your own global flag, and raise it in the handler or handle it "live" depends on what is your final goal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文