No Console Application, Windows 10, Visual Studio 2017. 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: 16Linha o que o MSDN diz sobre isso: A sobrecarga WaitForExit () () () é usada para fazer o thread atual aguardar até o processo associado terminar. Este método instrui o componente Processo a aguardar uma quantidade infinita de tempo para que o processo saia. Isso pode fazer com que um aplicativo pare 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 gravado para nunca entrar no 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 é, naturalmente, para. O que faz você pensar que não aguarda que o processo Note termine. Quais são os sinais disso. Qual é a prova sexta-feira, 20 de fevereiro de 2009 8:13 PM Não tenho certeza se isso mudou recentemente, mas de volta no dia aplicações na janela O celular nunca foi realmente fechado quando bateu no X para fechá-los, eles apenas minimizariam e continuavam funcionando em segundo plano (isso não era um bug, era um recurso, já que da próxima vez que você iniciar o aplicativo, ele seria iniciado com muita rapidez, yah Eu sei, insano, mas verdadeiro), então, por isso, o WaitForExit talvez esteja se comportando estranhamente e aguardando a inicialização do aplicativo em vez de sair. Mas, novamente, é apenas uma especulação baseada em conhecimentos de versões antigas do Windows Mobile. Sexta-feira, 20 de fevereiro de 2009 11:03 PM Eu gostaria de colidir esta questão. Estou no Windows Mobile 6 Standard e estou tentando gerar uma instância do navegador. Gostaria de aguardar 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 reencontros esperados Segunda-feira, 08 de junho de 2009 22:45 Onde está o símbolo. símbolo. AlexB Terça, 09 de junho de 2009 9:58 PM Estou vendo o mesmo problema, mas no XP. Eu acho que a prova pode ser vista em qualquer depurador (como estou vendo), ou em qualquer aplicativo de console (não necessariamente no celular) quarta-feira, 02 de setembro de 2009 8:35 PM Exceto que você não obtém um objeto de processo que você pode usar. Se você tentar DimProjetos NovosProcessos () myProc Process. Start (quotiexplorequot, quotfinance. yahooqhpsquot symbol) myProc. WaitForExit () Ele ainda retorna imediatamente. Quarta-feira, 2 de setembro de 2009 8:48 PM O problema é que você não está iniciando uma nova instância de iexplore. exe. Você está apenas criando uma nova janela no processo existente. O meu palpite é que iexplore. exe começa, vê uma instância anterior e se comunica com a instância anterior para que ela abre a nova janela, e então essa instância que você iniciou sai imediatamente. Portanto, o comportamento é correto e esperado. Blog. voidnish quarta-feira, 2 de setembro de 2009 8:52 PM A Microsoft está realizando uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, a pesquisa on-line será apresentada quando você deixar o site Msdn. Você gostaria de participar
No comments:
Post a Comment