Saturday 25 November 2017

O Processo Waitforexit C # Trava


No Console Application, Windows 10, Visual Studio 2015. NET 4.6 eu ligo método único no Main chamado TestProcess. Modo de compilação Debug, se eu executar o aplicativo sem depurar, imprime o texto correto: pressione qualquer tecla para continuar. Se eu executar o aplicativo com a depuração, aguarda 3 segundos antes de imprimir Erro Falso Falso Falso Isso é apenas uma simplificação do problema real, esse código é uma espinha dorsal de algum código complexo que também trava na versão sem depuração para md5sums. exe, mas funciona para algum outro Programas. O código Coplex também trava em var a proc. WaitForExit (tempo limite) até o tempo limite como no exemplo anexado. Por outro lado, esta simplificação funcionará na versão sem depurador. Além disso, todos esses problemas começaram com o Windows 10, no Windows 7, tudo funcionou bem. EDIT Não pode entender porque md5sums. exe causaria problemas e se eu usar algo mais, ou seja. FileName ping, Argumentos localhost tudo funciona como esperado. EDIT2 Meu programa complexo parou de funcionar no Windows 10 (Release - Run without debugging), mas este exemplo trava no Windows 7 também (Debug - Run with debugging) perguntou 17 de maio 16 às 13:21 Este problema tem uma solução muito simples. Você só pode descobrir quando você escreve uma mensagem de erro significativa, que dá ao usuário de seu programa uma boa dica sobre o que exatamente deu errado. Uma boa regra geral nunca é usar um tempo limite inferior a 10 segundos em um PC de estação de trabalho, 20 segundos em um servidor. Adicione mais se é um programa quotcomplexquot. Ndash Hans Passant 17 de maio 16 às 14:01 O programa Complexo HansPassant tem tempo limite nos dias :) Com 20 segundos de tempo, o comportamento de alteração do didn39t para este exemplo, embora test. txt seja arquivo com apenas uma linha curta de texto e Console. WriteLine (quotError: 39 39, 39 39quot) retornou quotError: 3939, 3939. a, b e c são todos falsos quando falha. O que seria uma mensagem de erro significativa seria ndash watbywbarif 17 de maio 16 às 14:29 Houve 3 capturas para resolver isso: md5sums. exe em alguns casos interrompe a execução depois de terminar quando iniciado com minhas configurações: Pressione ENTER para sair Isso pode ser observado se CreateNoWindow for Configurado para false e stdout, o redirecionamento stderr foi removido. Isso pode ser corrigido usando a opção - e: saia imediatamente, não faça uma pausa antes de retornar. Isso solucionará todos os casos. Mas como eu não usei, eu tinha comportamento inconsistente, dependendo do depurador e da versão do Windows. Quando executado sem a pausa de depuração não foi disparado, embora todas as configurações fossem as mesmas e pressione ENTER para sair não estava em saída. Mas correr com a depuração causou uma pausa para bloquear o programa até o tempo limite, onde os md5sums pendurariam no gerenciador de tarefas aguardando Enter. No modo de lançamento, execute sem depuração, embora a pausa seja disparada e pressione ENTER para sair estava em saída no Windows 7 md5sums retornados e a execução continuou sem bloquear e pressionar o tempo limite. Este não foi o caso no Windows 10, onde md5sums viveria na tarefa, aguardando Enter e o programa continuasse após o término do tempo limite. Respondeu 18 de maio 16 às 11: 16 Agora estou trabalhando em um aplicativo Console Runner que possui o seguinte código para exibir o log e esperar até que o processo seja concluído: eu tenho duas perguntas sobre esse código. Notei que, se o processo demorar mais de 30 segundos, a chamada p. ExitCode bombardeia. O que acontece se o meu processo demorar apenas 1 segundo, aguardará 30 segundos de qualquer forma ou o processo será avisado pelo CLR perguntou 5 de fevereiro às 12:40. Eles escondem esses segredos na documentação: quot Se você tentar obter o ExitCode antes da O processo foi encerrado, a tentativa lança uma exceção. Examine primeiro o recurso HasExited para verificar se o processo associado foi encerrado. Quot e quotWaitForExit. E bloqueia o atual segmento de execução até que o tempo tenha decorrido ou o processo tenha exitado ndash Alex K. Feb 5 14 às 12:44 Eu achei isso também, mas não tinha certeza de ter lido isso corretamente. Então, parece que, se o processo sair antes do carimbo de data / hora dentro do WaitForExit, não há problemas, mas o contrário significa uma ótima exceção. Obrigado ndash Raffaeu 5 de fevereiro às 12:49

No comments:

Post a Comment