等待过程完成

时间:2012-09-26 13:50:08

标签: vb.net visual-studio-2010 process

在继续下一行代码之前,有没有办法暂停进程或等待unitl进程完成?

这是我当前压缩所有PDF然后删除的过程。目前,它在压缩之前删除文件已完成。有没有办法暂停/等待,直到流程完成?

    Dim psInfo As New System.Diagnostics.ProcessStartInfo("C:\Program Files\7-Zip\7z.exe ", Arg1 + ZipFileName + PathToPDFs)
    psInfo.WindowStyle = ProcessWindowStyle.Hidden
    System.Diagnostics.Process.Start(psInfo)

    'delete remaining pdfs
    For Each foundFile As String In My.Computer.FileSystem.GetFiles("C:\Temp\", FileIO.SearchOption.SearchAllSubDirectories, "*.pdf")
        File.Delete(foundFile)
    Next

3 个答案:

答案 0 :(得分:11)

Process.Start返回进程实例。正如其他人提到的那样,你可以使用WaitForExit()方法,尽管你应该使用WaitForExit(Integer),其中包括一个超时,以防止在压缩过程中出现问题。

所以你的代码会变成:

...
Dim zipper As System.Diagnostics.Process = System.Diagnostics.Process.Start(psInfo)
Dim timeout As Integer = 60000 '1 minute in milliseconds

If Not zipper.WaitForExit(timeout) Then
    'Something went wrong with the zipping process; we waited longer than a minute
Else
    'delete remaining pdfs
    ...
End If

答案 1 :(得分:6)

您可以使用process.WaitForExit方法

WaitForExit可以使当前线程等待,直到相关进程退出。

链接:http://msdn.microsoft.com/fr-fr/library/system.diagnostics.process.waitforexit(v=vs.80).aspx

答案 2 :(得分:4)

有几种WaitForExit方法可用。

查看Process.WaitForExit

  

WaitForExit()使当前线程等到关联   流程终止。它应该在所有其他方法之后调用   呼吁这个过程。要避免阻止当前线程,请使用   Exited事件。

     
      
  • 指示Process组件无限期地等待   相关流程退出。
  •   
     

WaitForExit(Int32)使当前线程等到   相关流程终止。它应该在所有其他之后调用   在流程上调用方法。避免阻塞电流   线程,使用退出事件。

     
      
  • 指示Process组件等待指定的数量   关联进程退出的毫秒数。
  •