Friday 8 December 2017

C # waitforexit


Sua solução não precisa de AutoResetEvent, mas você pesquisa. Quando você faz pesquisa em vez de usar o evento (quando eles estão disponíveis), então você está usando CPU sem razão e que indicam que você é um programador ruim. Sua solução é realmente ruim quando comparado com o outro usando AutoResetEvent. (Mas eu não te dei -1 porque você tentou ajudar). Ndash Eric Ouellet Nov 7 14 at 18:38 Eu estava tendo o mesmo problema, mas a razão era diferente. No entanto, 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. Eu agora recebi uma janela popup Shell, que é indesejável, mas muito melhor do que o programa esperando nada particular acontecer. Então eu adicionei o seguinte work-around para que: Agora, a única coisa que me incomoda é por que isso está acontecendo no Windows 8 em primeiro lugar. Respondeu Jan 13 15 at 10:35 Exemplo de uso ImplementaçãoComo permanente é WaitForExit (). Quero dizer, existe algo / uma alternativa pode fazer para quebrar a espera, caso contrário, vou executar o meu segmento em uma função separada, e controlá-lo por variáveis ​​globais. Razão - um segmento CMD. EXE, com um aplicativo de console em execução, que precisamos cancelar antes de o thread executar o seu curso. Aqui está o que temos: ProcessStartInfo psi novo ProcessStartInfo (quotCMD. EXEquot, consulta) psi. UseShellExecute useShellExec psi. RedirectStandardOutput stdout psi. CreateNoWindow noWindow hbProc novo Process () hbProc Process. Start (psi) hbProc. WaitForExit () Bem, você poderia Use: while (hbProc. WaitForExit (someTimeout)) se (ShouldCancel) break Em 19 de setembro, 5:15 am, quotMarc Gravellquot ltmarc. grav. Gt escreveu: gt Bem, você poderia usar: gt gt enquanto (hbProc. WaitForExit (someTimeout)) gt if (ShouldCancel) quebrar gt gt gt gt gt Marc (nota, não há razão para chamar tanto o novo Process () (Psi) Ou você pode usar: hbProc new Process () hbProc. EnableRaisingEvents true hbProc. Exited novo EventHandler (functionToCallAfterProcesit) hbProc. StartInfo psi hbProc. Start () // outro thread-on quer cancelar o evento: hbProc - new EventHandler (functionToCallAfterProcesit) Em ambos os casos, basta estar ciente da condição de corrida potencial entre o processo de sair eo desejo de cancelar a espera. Em 19 de setembro, 4:11 am, Alistair George ltnon xtra. co. nzgt escreveu: gt How Permanente é WaitForExit (). Quero dizer, existe algo / uma alternativa gt pode fazer para quebrar a espera, caso contrário, vou executar o meu thread gt em uma função separada, e controlá-lo por variáveis ​​globais. Gt Razão - um segmento CMD. EXE, Com um aplicativo de console em execução, que nós gt necessidade de cancelar antes de o thread executando o seu curso. Gt Aqui está o que temos: gt ProcessStartInfo psi novo gt ProcessStartInfo (quotCMD. EXEquot, consulta) gt psi. UseShellExecute useShellExec gt psi. RedirectStandardOutput stdout gt psi. CreateNoWindow noWindow gt hbProc novo Process () gt hbProc Process. Start (psi) gt HbProc. WaitForExit () gt gt Obrigado, gt Alistair. Você pode matar o segmento em execução WaitForExit () ou usar a sobrecarga que permite especificar um tempo limite bool WaitForExit (int msToWait). Se você executá-lo em um segmento separado e matá-lo você está indo para obter uma exceção interrompida. Você pode querer certificar-se de que o processo que você começou não está ainda em execução (se for, mate-o). Gt Você pode matar o segmento em execução WaitForExit () ou usar a sobrecarga gt que permite especificar um timeout bool WaitForExit (int gt msToWait). Se você executá-lo em um segmento separado e matá-lo vai gt vai obter uma exceção interrompida. Você pode querer certificar-se de que o processo gt que você começou isnt ainda está funcionando (se for, mate-o). Gt Obrigado rapazes com as sugestões que são úteis. Irá aconselhar que opção funcionou melhor. Al. Copyright cópia 2005-2017, TechTalkz. Todos os direitos reservados. 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. Você gostaria de participar

No comments:

Post a Comment