0

所以,我有这个代码来调用批处理文件。

        If System.IO.File.Exists(FSourceFile) Then
            Dim psi As New ProcessStartInfo(batchFileLoc + batchFileName)
            psi.RedirectStandardOutput = True
            psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
            psi.UseShellExecute = False
            Dim myProcess As Process = Process.Start(psi)
            Dim output As String = myProcess.StandardOutput.ReadToEnd()
            myProcess.WaitForExit(180000)
            If (myProcess.HasExited) Then
                Throw New Exception("FTP failed due to time-out. Please check the connectivity to FTP server.")
            End If
            FTPFile = "Success"
        End If

如果批处理文件执行未在 3 分钟内完成,我希望“myProcess”应该退出。但即使批处理文件执行在不到 2 秒的时间内完成,myProcess.HasExited 也会
返回 True。如果我输入 2000 而不是 180000,则该过程可以正常工作。这里出了什么问题?

4

1 回答 1

1

myProcess.HasExited 只是告诉你进程是否退出。如果您对进程是否因超时而退出感兴趣,您应该使用

If Not myProcess.WaitForExit(180000) Then
    Throw New Exception("FTP failed due to time-out. Please check the connectivity to FTP server.")
End If   
于 2013-06-21T13:50:04.513 回答