Sunday 10 November 2019

Redirecionar saída c # processo waitforexit


Eu tentei tudo, mas não consigo obter a Saída de um processo para redirecionar para uma caixa de listagem. Posso redirecioná-lo para um arquivo, mas não para a caixa de listagem. Aqui está o código. String machineName textBox1.Text processo processo novo processo () process. StartInfo. FileName quotschtasksquot process. StartInfo. Arguments quot query s quot 43 machineName process. StartInfo. UseShellExecute false process. StartInfo. RedirectStandardOutput true process. StartInfo. CreateNoWindow true process. Start ( ) String output process. StandardOutput. ReadToEnd () process. WaitForExit () Não consigo descobrir o que estou faltando. O aplicativo irá escrever a linha de cabeçalho, mas nenhum dos dados. No entanto, quando eu mudar isso para um arquivo, ele escreve tudo. Terça-feira, 17 de maio de 2017 2:45 PM Foi adicionado a saída como um item. Eu criei uma matriz para cada linha e parece funcionar agora. Marcado como resposta por Matt11380 terça-feira, 17 de maio de 2017 9:33 PMSystem. Diagnostics. Process: redirecionamento 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