【发布时间】:2014-03-25 17:29:40
【问题描述】:
为了这个问题,我已经简化了我的代码,但基本上发生的事情是这样的:
private void RunScript(string path)
{
Process.Start(path);
lblStatus.Text = "Step 6 Complete";
}
但是,我不希望更新标签的文本直到脚本完成运行。那可能吗?或者说,实用/可行?
【问题讨论】:
为了这个问题,我已经简化了我的代码,但基本上发生的事情是这样的:
private void RunScript(string path)
{
Process.Start(path);
lblStatus.Text = "Step 6 Complete";
}
但是,我不希望更新标签的文本直到脚本完成运行。那可能吗?或者说,实用/可行?
【问题讨论】:
如果您想等待最长给定时间,只需将您的代码替换为:
Process.Start(path).WaitForExit(milli seconds);
或者如果你想永远等待(通常直到它完成)
Process.Start(path).WaitForExit();
【讨论】:
wait possibly forever - 太阳快要燃烧殆尽了,但上帝啊,这个安装脚本太棒了!
你可以使用 Process.Start(path).WaitForExit();那将...等待进程退出,然后再继续。
如果这是在您的主 UI 线程上,请小心,因为 UI 在工作时会冻结并变得无响应。当您成功完成(或必须处理错误)时,在BackgroundWorker 或类似名称上启动该过程并更新/启动第 7 阶段。
【讨论】:
Process.Start 在进程启动时返回 true 添加一个 do while 循环,应该就是这样
bool started = Process.Start(path)
【讨论】: