首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# -让Process.Start等待进程启动

C# -让Process.Start等待进程启动
EN

Stack Overflow用户
提问于 2011-06-18 02:18:55
回答 10查看 140.5K关注 0票数 81

在继续使用方法之前,我需要确保进程正在运行。

声明如下:

代码语言:javascript
复制
Process.Start("popup.exe");

您可以执行等待命令或对该值设置延迟吗?

EN

回答 10

Stack Overflow用户

发布于 2011-06-18 02:21:40

你的意思是等它做完?然后使用Process.WaitForExit

代码语言:javascript
复制
var process = new Process {
    StartInfo = new ProcessStartInfo {
        FileName = "popup.exe"
    }
};
process.Start();
process.WaitForExit();

或者,如果它是一个带有UI的应用程序,您正在等待进入消息循环,您可以这样说:

代码语言:javascript
复制
process.Start();
process.WaitForInputIdle();

最后,如果这两种方法都不适用,那么只需在一段合理的时间内使用Thread.Sleep

代码语言:javascript
复制
process.Start();
Thread.Sleep(1000); // sleep for one second
票数 141
EN

Stack Overflow用户

发布于 2011-06-18 02:39:31

我也需要它一次,并且我检查了进程的窗口标题。如果它是您所期望的,那么您可以确保应用程序正在运行。我正在检查的应用程序需要一些时间来启动,这种方法对我来说工作得很好。

代码语言:javascript
复制
var process = Process.Start("popup.exe");
while(process.MainWindowTitle != "Title")
{
    Thread.Sleep(10);
}
票数 19
EN

Stack Overflow用户

发布于 2016-03-04 14:26:51

'ChrisG‘的答案是正确的,但我们每次都需要刷新MainWindowTitle,最好检查是否为空...如下所示:

代码语言:javascript
复制
var proc = Process.Start("popup.exe");
while (string.IsNullOrEmpty(proc.MainWindowTitle))
{
    System.Threading.Thread.Sleep(100);
    proc.Refresh();
}
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6390030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档