Wednesday, 6 December 2017

Redireccionar o padrão de espera de espera waitforexit vb


Execute um processo e obtenha sua saída Já se perguntou como o Visual Studio executa um processo - como um compilador - e exibe o texto que ele retorna em sua própria janela. Na verdade, é realmente fácil - e é um exemplo simples de como. Função Compartilhada GetProcessText (Processo ByVal Como Cadeia, ByVal param Como Cadeia, ByVal workingDir As String) Como String Dim p Como Processo Novo Processo este é o nome do processo que queremos executar p. StartInfo. FileName processo Se Não (workingDir) Então P. StartInfo. WorkingDirectory workingDir End If. StartInfo. Arguments param precisa definir isso como falso para redirecionar saída p. StartInfo. UseShellExecute Falso p. StartInfo. RedirectStandardOutput Verdadeiro iniciar o processo p. Iniciar ler toda a saída aqui podemos apenas ler linha Por linha e exibi-lo em uma janela de saída Dim output As String p. StandardOutput. ReadToEnd aguarde o processo finalizar p. WaitForExit Retornar saída End Function Você também pode gostar. System. Diagnostics. Process: redirect StandardInput, StandardOutput, StandardError 82218217 InputAndOutputToEnd : Uma maneira prática de usar o inputoutputerror redirecionado em uma p. 82218217 ltparam name8221p8221gtThe p para redirecionar. Deve ter UseShellExecute definido como false. ltparamgt 82218217 ltparam name8221StandardInput8221gtEsta seqüência será enviada como entrada para a p. (Deve ser Nothing if not StartInfo. RedirectStandardInput) ltparamgt 82218217 ltparam name8221StandardOutput8221gt A saída p8217s será coletada nesta string ByRef. (Deve ser Nothing if not StartInfo. RedirectStandardOutput) ltparamgt 82218217 ltparam name8221StandardError8221gtO erro p8217s será coletado nesta string ByRef. (Deve ser Nothing if not StartInfo. RedirectStandardError) ltparamgt 82218217 ltremarksgtEsta função resolve o problema do deadlock mencionado em msdn. microsoften-uslibrarysystem. diagnostics. p.standardoutput. aspxltremarksgt ltRuntimepilerServices. Extension () gt Sub InputAndOutputToEnd (ByVal p As Diagnostics. Process, ByVal StandardInput As String. ByRef StandardOutput As String. ByRef StandardError As String) Se p is Nothing, então, lance New ArgumentException (8220p deve ser não-null8221) 8216 Suponha que p tenha começado. Infelizmente não há como verificar. Se p. StartInfo. UseShellExecute, então, lança New ArgumentException (8220Set StartInfo. UseShellExecute to false8221) Se (p. StartInfo. RedirectStandardInput ltgt (StandardInput IsNot Nothing)), então, lança New ArgumentException (8220Provide uma entrada não-nula somente quando StartInfo. RedirectStandardInput8221) If (P. StartInfo. RedirectStandardOutput ltgt (StandardOutput IsNot Nothing)) Então, lança New ArgumentException (8220Provide uma saída não nula somente quando StartInfo. RedirectStandardOutput8221) Se (p. StartInfo. RedirectStandardError ltgt (StandardError IsNot Nothing)), então, lança New ArgumentException (8220Provide Um erro não nulo apenas quando StartInfo. RedirectStandardError8221) Dim outputData como novo InputAndOutputToEndData Dim errorData como novo InputAndOutputToEndData Se p. StartInfo. RedirectStandardOutput Then

No comments:

Post a Comment