Thursday 9 November 2017

Waitforexit process c # exemplo code


Permite ler 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. Esta 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 você bateu o X para fechá-los, eles apenas minimizariam e continuavam funcionando em segundo plano (isso não era um bug, era um recurso, já que na próxima vez que você iniciou o aplicativo, ele começaria muito rápido, 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 Id gostaria de colidir esta questão. Estou no Windows Mobile 6 Standard e estou tentando gerar uma instância de 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 resubs esperados Segunda-feira, 08 de junho de 2009 10:45 PM Onde 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 Dim myProc As New Process () myProc Process. Start (quotiexplorequot, quotfinance. yahooqhpsquot symbol) myProc. WaitForExit () Ele ainda retorna imediatamente. Quarta-feira, 02 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 é 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, em seguida, a instância que você começou a sair 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? Qual permanente é WaitForExit (). Quero dizer, há algo que 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 uma aplicação de console em execução, que precisamos cancelar antes do segmento executando 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 Processo () hbProc Process. Start (psi) hbProc. WaitForExit () Bem, você poderia Use: enquanto (hbProc. WaitForExit (someTimeout)) se (ShouldCancel) quebrar On Sep 19, 5:15 am, quotMarc Gravellquot ltmarc. grav. Gt escreveu: gt Bem, você poderia usar: gt gt enquanto (hbProc. WaitForExit (someTimeout)) gt se (ShouldCancel) romper gt gt gt gt Marc (nota, não há motivo para chamar tanto o novo processo () quanto o processo. Start (psi) Ou você poderia usar: hbProc new Process () hbProc. EnableRaisingEvents true hbProc. Exited new EventHandler (functionToCallAfterProcesit) hbProc. StartInfo psi hbProc. Start () outro thread - on quer cancelar evento: hbProc - EventHandler novo ( FunctionToCallAfterProcesit) Em ambos os casos, apenas esteja ciente da condição de corrida potencial entre o processo que sai e o desejo de cancelar a espera. Em 19 de setembro, 4:11 am, Alistair George ltnon. Xtra. co. nzgt escreveu: gt Como permanece WaitForExit (). Quero dizer, há algo que 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 console Aplicação em execução, a qual gt precisamos cancelar antes do segmento que está executando seu curso E. Gt Aqui está o que temos: gt ProcessStartInfo psi new gt ProcessStartInfo (quotCMD. EXEquot, consulta) gt psi. UseShellExecute useShellExec gt psi. RedirectStandardOutput stdout gt psi. CreateNoWindow noWindow gt hbProc novo Processo () gt hbProc Process. Start (psi) gt HbProc. WaitForExit () gt gt Obrigado, gt Alistair. Você pode matar o thread executando WaitForExit () ou usar a sobrecarga que permite especificar um timeout bool WaitForExit (int msToWait). Se você executá-lo em um segmento separado e matá-lo, você vai conseguir uma exceção interrompida. Você pode querer certificar-se de que o processo que você iniciou ainda não está sendo executado (se for, mate-o). Gt Você pode matar o thread executando WaitForExit () ou usar a sobrecarga gt que permite que você especifique um timeout bool WaitForExit (int gt msToWait). Se você executá-lo em um segmento separado e matá-lo, você vai obter uma exceção interrompida. Você pode querer certificar-se de que o processo gt que você iniciou ainda não está sendo executado (se for, mate-o). Gt Obrigado pessoal com as sugestões que são úteis. Aconselhará qual opção funcionou melhor. Al. Copyright cópia 2005-2017, TechTalkz. Todos os direitos reservados.

No comments:

Post a Comment