К основному контенту

C # process beginoutputreadline waitforexit vb


Eu tenho problemas com a leitura do resultado de um processo de forma assíncrona em C. Eu encontrei algumas outras perguntas semelhantes neste site, mas eles realmente não me ajudam. Aqui está o que eu faço: Faça novo processo Defina startinfo - FileName, Argumentos, CreateNoWindow (true), UseShellExecute (false), RedirectStandardOutput (true) Adicione o manipulador de eventos ao processo de saída OutputDataReceived, BeginOutputReadLine e WaitForExit (). Isso 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 por cento não aparecem. Aqui está o código atual do meu programa: há poucas coisas que estão ficando a caminho 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 provavelmente 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 adequado e o bs precisará processado de forma diferente se o seu progresso em um formulário): respondido 2 de março 12 às 13:06 Process. WaitForExit () Aguarde até que termine a leitura do fluxo de erro assíncrona. Infelizmente, isso não é verdade para a sobrecarga Process. WaitForExit (tempo limite). Isso é 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 verdadeiro: Elina: obrigado pela sua resposta. Há algumas notas na parte inferior deste MSDN doc (msdn. microsoften-uslibraryhellip) que alertam sobre potenciais bloqueios se você ler ao final de ambos os fluxos stdout e stderr redirecionados de forma síncrona. É difícil dizer se sua solução é suscetível a esse problema. Além disso, parece que você está enviando o process39 stdoutstderr output novamente na entrada. Por quê. ) Ndash Matthew Piatt 26 de setembro 16 às 4:42 Esta é uma solução baseada em TPL (Task Parallel Library) mais moderna e esperada para. NET 4.5 e acima. Exemplo de uso Implementação respondida 5 de outubro 16 às 10:54 Eu acho que isso é uma abordagem simples e melhor (não precisamos de AutoResetEvent): respondido 14 de junho 12 às 14:29 Verdadeiro, mas não deveria estar fazendo. FileName Path quotggsci. exequot quot lt Obeycommand. txtquot para simplificar o seu código também Ou talvez algo equivalente a quotggsci. exequot do quot do comando quotecho se você realmente não quiser usar um arquivo obeycommand. txt separado. Ndash Amit Naidu Jun 4 13 at 22:03 Sua solução não precisa de AutoResetEvent, mas você pesquisa. Quando você faz uma pesquisa em vez de usar o evento (quando está disponível), você está usando a CPU sem motivo e isso indica que você é um programador ruim. Sua solução é realmente ruim quando comparada com a outra usando AutoResetEvent. (Mas não te dou -1 porque voce tentou ajudar). Ndash Eric Ouellet Nov 7 14 às 18:38 Eu estava tendo o mesmo problema, mas a razão era diferente. No entanto, isso aconteceria no Windows 8, mas não no Windows 7. A seguinte linha parece ter causado o problema. A solução era NÃO desativar UseShellExecute. Agora recebi uma janela popup do Shell, que é indesejável, mas muito melhor do que o programa esperando que nada de particular aconteça. Então eu adicionei o seguinte trabalho para isso: agora, o único problema que me incomoda é o porquê isso está acontecendo no Windows 8, em primeiro lugar. Respondeu 13 de janeiro 15 às 10:35 Tentei fazer uma aula que resolva seu problema usando a leitura de fluxo assíncrono, levando em conta Mark Byers, Rob, Stevejay responde. Ao fazê-lo, percebi que existe um bug relacionado à leitura assíncrona do fluxo de saída do processo. Você não pode fazer isso: você receberá System. InvalidOperationException. StandardOut não foi redirecionado ou o processo ainda não começou. Então, você deve iniciar a saída assíncrona lida depois que o processo for iniciado: fazendo isso, faça uma condição de corrida porque o fluxo de saída pode receber dados antes de configurá-lo como assíncrono: então, algumas pessoas podem dizer que você só precisa ler o fluxo antes de você Configure-o para assíncrono. Mas o mesmo problema ocorre. Haverá uma condição de corrida entre a leitura síncrona e configurará o fluxo em modo assíncrono. Não há como obter uma leitura assíncrona segura de um fluxo de saída de um processo da maneira atual Process e ProcessStartInfo foi projetado. Você provavelmente está melhor usando a leitura assíncrona, como sugerido por outros usuários para o seu caso. Mas você deve estar ciente de que você pode perder algumas informações devido à condição de corrida.

Комментарии

Популярные сообщения из этого блога

Maiores forex comerciantes no mundo

A OANDA usa cookies para tornar nossos sites fáceis de usar e personalizados para nossos visitantes. Os cookies não podem ser usados ​​para identificá-lo pessoalmente. Ao visitar o nosso site, você aceita o uso de cookies da OANDA8217 de acordo com nossa Política de Privacidade. Para bloquear, excluir ou gerenciar cookies, visite aboutcookies. org. A restrição de cookies impedirá que você se beneficie de algumas das funcionalidades do nosso site. Baixe a nossa conta Mobile Select Apps: Top 100 Forex Traders Statistics Revise os dias de estratégias de negociação forex bem sucedidas e mal sucedidas As seguintes estatísticas são calculadas a partir das atividades de negociação forex nas últimas 24 horas de dois grupos de comerciantes OANDA: os 100 melhores mais rentáveis ​​e ( Opcionalmente) os 100 melhores comerciantes rentáveis. Como esses comerciantes de forex são selecionados. Esses comerciantes de forex não são selecionados exclusivamente em seu montante total de lucros e ganhos real...

Forex trading graphics

Ferramentas de negociação de Forex - por CJA Bem-vindo a - CJA Trading Tools - Uma seleção de software personalizado MT4 exclusivo Todos esses indicadores CJA Custom MT4 foram projetados e criados com o Forex Trader em mente, você achará que essas ferramentas se revelarão inestimáveis Para os comerciantes principiantes e experientes, não só eles são uma ferramenta de trabalho, mas também foram apresentados gráficos que atraem os olhos e que podem tornar mais fáceis as decisões de negociação. Aproveite o tempo para examinar este site e considerar o que a CJA Trading Tools tem para oferecer. NOTA: Este site deve funcionar com todos os navegadores de internet comuns. Por favor, envie-me um e-mail se o seu navegador não funcionar corretamente com este site usando o link Contato CJA abaixo ou no ccjjaagmail. Software MT4 para COMPRAR Barras de sinal Executivo nmc Velas de reversão nmc mtf contagem regressiva v1.2 HI BAIXA Velas nmc RSI Multi Período nmc MA Barra nmc Tendência dinâmica nmc T...

Forex fábrica preço ação indicador pense

Qual indicador melhor representa ação de preço Não há uso deste fórum. A paciência é uma virtude, eu sei disso, mas ninguém está respondendo sobre as coisas que eu quero. É só o fórum de bate-papo chit, penso. Tente isso. Atualmente, eu prefiro o M5 para escalar, Parâmetro no minuto 96 minutos, uso do termo 0. Ou se você usar um número maior (é o nível CCI). A regra é sinal azul uma entrada longa, vermelho uma entrada curta. Olhe para o comprimento da cor EMA (é um EMA, mas eu personalizou para ser codificado por cor para o sinal). A regra não é absoluta, olhe para ela e veja se você pode detectar o padrão útil. Jogue com o parâmetro também. Você pode aumentar e diminuir o zoom e ainda não perder o sinal indicador. Caçada feliz. Imagem anexa (clique para ampliar) Preço Ação Negociação com indicadores O sistema Freebie Sistema muito fácil. Amp SUPER rentável. Se for negociado corretamente. Por que é chamado de The Freebie Newbie Systemquot PORQUE É GRATUITO amp Newbie AMIGÁVEL. . LEIA T...