C# 查找另一个exe文件何时完成其作业?

C# 查找另一个exe文件何时完成其作业?,c#,executable,C#,Executable,我正在c#代码中执行另一个.exe文件,但我需要确保.exe文件已经完成了它的工作,以便我的代码可以运行其余的部分。这是我的密码 Process p = new Process(); p.StartInfo.FileName = path; p.Start(); ////// stop untill previous file finish its job p.StartInfo.FileName = newpath; p.Start(); 根据: 您可以使用p.HasExited 您还可以设

我正在c#代码中执行另一个.exe文件,但我需要确保.exe文件已经完成了它的工作,以便我的代码可以运行其余的部分。这是我的密码

Process p = new Process();
p.StartInfo.FileName = path;
p.Start();
////// stop untill previous file finish its job
p.StartInfo.FileName = newpath;
p.Start();
根据:

您可以使用p.HasExited

您还可以设置退出的事件处理程序,如下所述

所以在你的情况下,你有两种方法来解决你的问题。或者,在条件p.HasExit为true之前,通过循环和休眠活动等待进程退出,或者可以设置退出的事件处理程序(推荐方法)。下面是EventHandler方法的一个示例:

private void your_ExitedHandler(object sender, System.EventArgs e) {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = "your\\new\\path\\bin.exe";
    p.Start();
    /* ... */
}

public void yourFunction() {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = path;
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(your_ExitedHandler);
    p.Start();
    /* ... */
}
下面是一个睡眠示例(如果适用,这将导致UI在主线程中执行时阻塞):

如果您的应用程序是基于GUI的,您可以查看该类。

根据:

您可以使用p.HasExited

您还可以设置退出的事件处理程序,如下所述

所以在你的情况下,你有两种方法来解决你的问题。或者,在条件p.HasExit为true之前,通过循环和休眠活动等待进程退出,或者可以设置退出的事件处理程序(推荐方法)。下面是EventHandler方法的一个示例:

private void your_ExitedHandler(object sender, System.EventArgs e) {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = "your\\new\\path\\bin.exe";
    p.Start();
    /* ... */
}

public void yourFunction() {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = path;
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(your_ExitedHandler);
    p.Start();
    /* ... */
}
下面是一个睡眠示例(如果适用,这将导致UI在主线程中执行时阻塞):

如果您的应用程序是基于GUI的,您可以查看该类。

根据:

您可以使用p.HasExited

您还可以设置退出的事件处理程序,如下所述

所以在你的情况下,你有两种方法来解决你的问题。或者,在条件p.HasExit为true之前,通过循环和休眠活动等待进程退出,或者可以设置退出的事件处理程序(推荐方法)。下面是EventHandler方法的一个示例:

private void your_ExitedHandler(object sender, System.EventArgs e) {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = "your\\new\\path\\bin.exe";
    p.Start();
    /* ... */
}

public void yourFunction() {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = path;
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(your_ExitedHandler);
    p.Start();
    /* ... */
}
下面是一个睡眠示例(如果适用,这将导致UI在主线程中执行时阻塞):

如果您的应用程序是基于GUI的,您可以查看该类。

根据:

您可以使用p.HasExited

您还可以设置退出的事件处理程序,如下所述

所以在你的情况下,你有两种方法来解决你的问题。或者,在条件p.HasExit为true之前,通过循环和休眠活动等待进程退出,或者可以设置退出的事件处理程序(推荐方法)。下面是EventHandler方法的一个示例:

private void your_ExitedHandler(object sender, System.EventArgs e) {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = "your\\new\\path\\bin.exe";
    p.Start();
    /* ... */
}

public void yourFunction() {
    /* ... */
    Process p = new Process();
    p.StartInfo.FileName = path;
    p.EnableRaisingEvents = true;
    p.Exited += new EventHandler(your_ExitedHandler);
    p.Start();
    /* ... */
}
下面是一个睡眠示例(如果适用,这将导致UI在主线程中执行时阻塞):


如果您的应用程序是基于GUI的,您可以查看该类。

如果您不关心主线程是否被阻塞,只需调用


如果你不在乎你的主线程是否被阻塞,只需打电话


如果你不在乎你的主线程是否被阻塞,只需打电话


如果你不在乎你的主线程是否被阻塞,只需打电话


隐马尔可夫模型。。。我认为当.exe文件完成其工作时,它将关闭.exe,如果是这样的话,那么您可以检测进程是否正在运行?如果它没有运行,那就意味着它完成了它的工作。我不知道还有没有别的办法。嗯。。。我认为当.exe文件完成其工作时,它将关闭.exe,如果是这样的话,那么您可以检测进程是否正在运行?如果它没有运行,那就意味着它完成了它的工作。我不知道还有没有别的办法。嗯。。。我认为当.exe文件完成其工作时,它将关闭.exe,如果是这样的话,那么您可以检测进程是否正在运行?如果它没有运行,那就意味着它完成了它的工作。我不知道还有没有别的办法。嗯。。。我认为当.exe文件完成其工作时,它将关闭.exe,如果是这样的话,那么您可以检测进程是否正在运行?如果它没有运行,那就意味着它完成了它的工作。不过,我不确定是否还有其他办法。