Beginoutputreadline waitforexit vb


Meu objetivo é ler a saída de um processo de linha de comando 7zip em tempo real. Eu codifiquei um leitor de saída assíncrono que usa BeginOutputReadLine. Esse método deve retornar uma nova linha imediatamente se fosse enviado para saída. Ou, como o MSDN, diz: Quando as operações de leitura assíncronas começam, o manipulador de eventos é chamado cada vez que o processo associado grava uma linha de texto em seu fluxo StandardOutput. Este é o meu código O problema é que eu não recebo nenhuma linha até o processo terminar. Depois disso, toda a saída é retornada para o OutputHandler de fluxo associado. O resultado do meu código assíncrono é muito parecido com o uso do método Synchronous StandardOutput. ReadToEnd. O que estou fazendo errado Eu criei um arquivo em lotes para testar meu código com um comando de ping. Isso parece funcionar. O 7zip faz algo estranho com a sua saída. Porque parece que o problema tem algo a ver com a saída do 7zip em vez do código que o lê. Perguntou 1 de agosto 14 em 13: 37 Tenho problema em ler o resultado de um processo de forma assíncrona em C. Encontrei outras questões similares neste site, mas na verdade não me ajudam. Aqui está o que eu faço: Faça novo processo Defina startinfo - FileName, Argumentos, CreateNoWindow (true), UseShellExecute (falso), RedirectStandardOutput (true) Adicione o manipulador de eventos ao processo de saída OutputDataReceived, BeginOutputReadLine e WaitForExit (). Ele funciona bem, mas o resultado do processo iniciado grava alguns por cento () que eu quero obter, mas eu não posso, pois meu código lê linha a linha e os percentuais não aparecem. Aqui está o código atual do meu programa: Process. WaitForExit () aguardará até que a leitura do fluxo de erro assíncrona de saída seja concluída. Infelizmente, isso não é verdade para a sobrecarga Process. WaitForExit (tempo limite). Isto é o que a classe Process faz internamente: Então, aguardará as leituras assíncronas somente se não houver tempo limite Para corrigi-lo, basta chamar WaitForExit sem parâmetros () após WaitForExit (timeout) retornado true: Existem algumas coisas que estão recebendo no Maneira disso. O aplicativo de console provavelmente está usando b backspace para substituir a porcentagem, talvez ele não esteja acendendo o fluxo de stdout após cada gravação, e BeginOutputReadLine presumivelmente espera o fim da linha antes de fornecer dados. Veja como você continua com o processo de leitura. StandardOutput. BaseStream via BeginRead (este código não é assíncrono apropriado e o bs precisará processado de forma diferente se você colocar o progresso em um formulário): respondeu 2 de março 12 às 13:06 Eu irei ver isso e tente. Ndash Nikolay Dakov 2 de março 12 às 13:16 respondeu 2 de março 12 às 12:16 Eu tentei isso, mas mostra a saída quando o processo termina e eu não consigo obter os percentuais. Ndash Nikolay Dakov 2 de março 12 às 12:19 Você pode fornecer algum código ndash Onkelborg Mar 2 12 às 12:23 Já forneci o código. Ndash Nikolay Dakov 2 de março às 12:37 Sua resposta 2017 Stack Exchange, Inc

Comments

Popular posts from this blog

Ozforex fx rates

Forex strategy wiki final fantasy

Copie negociações de forex ao vivo em 2018