Tuesday 14 November 2017

C # Process Waitforexit Standard Output


Esta pergunta já tem uma resposta aqui: Eu preciso gerar um processo filho que é um aplicativo de console, e capturar sua saída. Eu escrevi o seguinte código para um método: No entanto, isso não retorna nada. Eu não acredito que o evento OutputDataReceived está sendo chamado de volta, ou o comando WaitForExit () pode estar bloqueando o segmento para que ele nunca retorno de chamada. EDIT: Parece que eu estava tentando muito com o retorno de chamada. Fazendo: Parece funcionar bem. Perguntou Nov 12 08 às 23:14 marcado como duplicado por Lu Vnh Ph250c. Poke c Os usuários com o crachá c podem fechar sozinhos as perguntas c como duplicatas e reabri-las conforme necessário. Esta questão foi feita antes e já tem uma resposta. Se essas respostas não abordarem completamente a sua pergunta, faça uma nova pergunta. Se você não estiver indo interagir com o aplicativo e apenas se preocupar com sua saída, não use a maneira Async BeginOutputReadLine () e Start () de fazê-lo. Descobri que estes não são muito fiáveis ​​e, por vezes, podem truncar o início da saída do aplicativo. Ndash Michael Graczyk Jul 16 12 at 23:47 Isn39t que um impasse à espera de acontecer MSDN Docs dizer que você arrisca um deadlock se ouvir a saída e erro ao mesmo tempo. O aplicativo será interrompido se o buffer de erro estiver cheio e aguarde que ele seja esvaziado. Mas você não está esvaziando o buffer de erro até que o buffer de saída esteja concluído (o que não será como o aplicativo está aguardando o buffer de erro). Ndash Michael Bisbjerg Mar 31 13 at 15:42 A resposta de Judah não funcionou para mim (ou não está completo) como a aplicação estava saindo após o primeiro BeginOutputReadLine () Isso funciona para mim como um trecho completo, lendo a saída constante de Um ping: Permite ler o que a MSDN diz sobre isso: A sobrecarga WaitForExit () () () é usada para fazer o thread atual esperar até que o processo associado termine. Este método instrui o componente de processo para aguardar uma quantidade infinita de tempo para o processo para sair. Isso pode causar um aplicativo para parar de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface de usuário, a solicitação ao sistema operacional para encerrar o processo associado pode não ser tratada se o processo for escrito para nunca inserir seu loop de mensagem. Essa sobrecarga garante que todo o processamento foi concluído, incluindo o tratamento de eventos assíncronos para a saída padrão redirecionada. Você deve usar essa sobrecarga após uma chamada para a sobrecarga WaitForExit (Int32) quando a saída padrão foi redirecionada para manipuladores de eventos assíncronos. Isso é claro para. NET. O que faz você pensar que ele não espera o processo Note para terminar Quais são os sinais de que O que é a prova Sexta-feira, 20 de fevereiro de 2009 20:13 Não tenho certeza se isso mudou recentemente, mas de volta no dia aplicações na janela Móvel nunca realmente fechado quando você bateu o X para fechá-los, eles apenas minimizar e continuar funcionando em segundo plano (este não era um bug, era uma característica, desde a próxima vez que você iniciar o aplicativo seria iniciado muito rápido, yah Eu sei, insano, mas verdade) para que poderia ser por isso WaitForExit é talvez se comportando estranhamente e esperando para a inicialização do aplicativo em vez de sair. Mas, novamente, é apenas especulação baseada em knowlegde de versões antigas do Windows Mobile. Sexta-feira, fevereiro 20, 2009 11:03 PM Id gostaria de colidir esta pergunta. Estou no Windows Mobile 6 Standard e estou tentando gerar uma instância do navegador. Eu gostaria de esperar até o usuário fechar o navegador. Mas WaitForExit retorna extremamente rápido. Aqui está o código: Processo p novo Processo () p. StartInfo. Argumentos quotexample-sitequot p. StartInfo. Verb quotOpenquot p. StartInfo. UseShellExecute falso p. StartInfo. FileName quotIExplore. exequot p. Start () p. WaitForExit () MessageBox. Show (quotNow o navegador deve ser closedquot) Qual deve ser o caminho certo para obter os resultados esperados Segunda-feira, 08 de junho de 2009 22:45 Onde está o símbolo. símbolo. AlexB terça-feira, 09 de junho de 2009 21:58 Im vendo o mesmo problema, mas no XP. Eu acho que a prova pode ser visto em qualquer depurador (como estou vendo), ou em qualquer aplicativo de console (não necessariamente no Mobile) Excepto que você não, em seguida, obter um objeto de processo que você pode usar. Se você tentar Dim myProc como novo processo () myProc Process. Start (quotiexplorandoquot, quotfinance. yahoo/q/hpsquot símbolo) myProc. WaitForExit () ele ainda retorna imediatamente. Quarta-feira, 02 de setembro de 2009 20:48 Problema é que você não está iniciando uma nova instância de iexplore. exe. Você está apenas criando uma nova janela sobre o processo existente. Meu palpite é iexplore. exe começa, vê uma instância anterior e se comunica com a instância anterior para que ele abra a nova janela e, em seguida, esta instância que você iniciou saídas imediatamente. Portanto, o comportamento é correto e esperado. Blog. voidnish quarta-feira, 2 de setembro de 2009 20:52 Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site Msdn. Se você optar por participar, o questionário on-line será apresentado a você quando você deixar o site Msdn. Gostaria de participarEu tentei tudo, mas não consigo obter a minha saída de um processo para redirecionar para uma caixa de listagem. Eu sou capaz de redirecioná-lo para um arquivo, mas não a caixa de listagem. Aqui está o código. String machineName textBox1.Text Processo de processo new Process () process. StartInfo. FileName quotschtasksquot processo. StartInfo. Argumentos quot / query / s quot 43 machineName process. StartInfo. UseShellExecute falso process. StartInfo. RedirectStandardOutput true process. StartInfo. CreateNoWindow true process. Start () string output process. StandardOutput. ReadToEnd () process. WaitForExit () Eu não consigo descobrir o que estou faltando. O aplicativo irá gravar 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 2011 14:45 Respostas Foi adicionando 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 2011 21:33

No comments:

Post a Comment