如果参数需要一段时间才能运行,则Process.start不会完成

时间:2014-07-19 03:28:12

标签: vb.net timeout process.start processstartinfo redirectstandardoutput

我有一个相当简单的过程,我调用一个PowerShell窗口,其中包含一些用于测试Active Directory复制的参数。 如下所示,我隐藏了这个窗口并将结果的输出重定向到resultsStorage变量:

    Try
        Dim sCommand As String = "powershell.exe"
        sArgs = "dcdiag /test:replications; repadmin /showrepl; repadmin /replsummary /errorsonly /sort:failures"
        Dim psi As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo(sCommand, sArgs)
        psi.UseShellExecute = False
        psi.CreateNoWindow = True
        psi.RedirectStandardOutput = True
        psi.RedirectStandardError = True
        Dim proc As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi)
        Dim errorResults As String = proc.StandardError.ReadToEnd
        If errorResults <> "" Then
            resultsStorage = errorResults
        Else
            resultsStorage = proc.StandardOutput.ReadToEnd
        End If
    Catch ex As Exception
        resultsStorage = "An error was encountered running replication test(s):" & vbNewLine & ex.ToString
    End Try

这在大多数情况下都很有效。但是,在某些情况下,使用上述参数进行复制测试可能需要很长时间。 (10分钟以上) 在这种情况下我注意到什么都不会被归还。 排除这个具体的论点,我已经尝试了几个不同的论点,我注意到几乎任何需要任何实际时间长度的论证都不会返回一个值。 process.start等待的时间量是否有限制? 关于如何改进这个的任何建议?

0 个答案:

没有答案