none
process.start()的问题 RRS feed

  • 问题

  •         Dim pInfo As New ProcessStartInfo()
            pInfo.FileName = filename

            Dim p As Process = Process.Start(pInfo)

            MsgBox("继续执行代码")

    为什么在程序执行时,"继续执行代码"这个对话框总在process.start前出现呢?

    哪怕是用sleep语句也不可以的,总是先执行后面的代码。

     

    2010年6月18日 9:41

答案

  • 你好!

         实际上Dim p As Process = Process.Start(pInfo)只是负责启动新进程的,启动后他就继续执行后面的代码了,新进程和你的程序是并发执行的,谁先执行并不一定!


    周雪峰
    • 已建议为答案 pucx 2010年6月19日 3:46
    • 已标记为答案 Fenix.1986 2010年6月21日 9:10
    2010年6月19日 0:53
    版主

全部回复

  • 你好!

         实际上Dim p As Process = Process.Start(pInfo)只是负责启动新进程的,启动后他就继续执行后面的代码了,新进程和你的程序是并发执行的,谁先执行并不一定!


    周雪峰
    • 已建议为答案 pucx 2010年6月19日 3:46
    • 已标记为答案 Fenix.1986 2010年6月21日 9:10
    2010年6月19日 0:53
    版主
  • 呵呵,谢谢版主的热心作答。

    可是我现在希望的就是进程能够立刻启动,而且在启动完毕之前不要继续进行下去程序。(因为我接下来的程序就希望用到这个启动的进程后的某些内容)

    希望能够再详细一点,谢谢!

    2010年6月21日 6:11
  • 你好!

        不客气啊!

        进程是否立刻启动,主要是那个程序来决定的,我们控制不了,比如要启动IE,双击之后这个工作就交给IE了,启动的快不快完全和IE有关,而不是你能控制的!

         是这个道理吧!

         你可以Thread.Sleep长一点时间来等待!


    周雪峰
    2010年6月21日 7:05
    版主
  • 呵呵,好的,问题已经解决了,感谢版主!
    2010年6月21日 9:10
  •        Dim pInfo As New ProcessStartInfo()
            pInfo.FileName = filename

            Dim p As Process = Process.Start(pInfo)

            P.WaitForExit()

            MsgBox("继续执行代码")

    2010年6月23日 7:56
  • picat,你这个方法我试过了,也不行的
    2010年6月24日 3:27
  • 我这里很正常啊,以下是测试代码:

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim pInfo As New ProcessStartInfo()
        pInfo.FileName = "cmd.exe"
    
        Dim p As Process = Process.Start(pInfo)
        p.WaitForExit()
    
        MsgBox("继续执行代码")
    
      End Sub
    cmd.exe只有在关闭的时候才会执行msgbox.
    2010年6月24日 5:15