【问题标题】:Is there a way to make my application wait until a script finishes?有没有办法让我的应用程序等到脚本完成?
【发布时间】:2014-03-25 17:29:40
【问题描述】:

为了这个问题,我已经简化了我的代码,但基本上发生的事情是这样的:

private void RunScript(string path)
{
    Process.Start(path);
    lblStatus.Text = "Step 6 Complete";
}

但是,我不希望更新标签的文本直到脚本完成运行。那可能吗?或者说,实用/可行?

【问题讨论】:

    标签: c# winforms .net-3.5


    【解决方案1】:

    如果您想等待最长给定时间,只需将您的代码替换为:

     Process.Start(path).WaitForExit(milli seconds);
    

    或者如果你想永远等待(通常直到它完成)

     Process.Start(path).WaitForExit();
    

    【讨论】:

    • 我不知道这是什么东西,我相信它会派上用场,但不幸的是,我正在编写一个实用程序来帮助加快我们复杂的补丁部署/更新过程。每次我们进行更新时,将运行的脚本花费的时间是可变的,这取决于正在更新的文件数量(有时只有一些小的关键事情,有时是巨大的更新)。所以我认为这不适用于这个特定问题。
    • @sab669 存在没有超时值的过载:msdn.microsoft.com/en-us/library/fb4aw7b8(v=vs.110).aspx
    • 毫秒是可选的,如果那是什么困扰你。我已经更新了我的答案。
    • wait possibly forever - 太阳快要燃烧殆尽了,但上帝啊,这个安装脚本太棒了!
    【解决方案2】:

    你可以使用 Process.Start(path).WaitForExit();那将...等待进程退出,然后再继续。

    如果这是在您的主 UI 线程上,请小心,因为 UI 在工作时会冻结并变得无响应。当您成功完成(或必须处理错误)时,在BackgroundWorker 或类似名称上启动该过程并更新/启动第 7 阶段。

    【讨论】:

      【解决方案3】:

      Process.Start 在进程启动时返回 true 添加一个 do while 循环,应该就是这样

        bool started = Process.Start(path)
      

      http://msdn.microsoft.com/en-us/library/vstudio/e8zac0ca

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-24
        • 1970-01-01
        • 2013-01-15
        • 1970-01-01
        • 2019-08-19
        • 1970-01-01
        • 2010-10-12
        • 2011-05-28
        相关资源
        最近更新 更多