Enableraisingevents Waitforexit


Como 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 um aplicativo de console em execução, que precisamos cancelar antes de o thread executando 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 Processo () 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 se (ShouldCancel) romper gt gt gt gt Marc (nota, não há motivo para chamar o novo processo () eo 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 permanente é WaitForExit (). Quero dizer, há algo que uma alternativa gt pode fazer para quebrar a espera, caso contrário, eu executarei meu thread gt em uma função separada e controlá-lo por variáveis ​​globais. Gt Reason - um segmento CMD. EXE, com um console Aplicativo em execução, que precisamos cancelar antes de o thread executar o 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 segmento em execução 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ê está indo para obter uma exceção interrompida. Você pode querer certificar-se de que o processo que você começou isnt ainda está funcionando (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 você está indo para obter uma exceção interrompida. Você pode querer certificar-se de que o processo gt que você começou não está ainda em execução (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-2016, TechTalkz. Todos os direitos reservados. Eu sou novo para o modelo de segmento em. O que você usaria para: iniciar um processo que manipula um arquivo (process. StartInfo. FileName fileName) esperar o usuário fechar o processo OU abandonar o thread depois de algum tempo se o usuário fechou o processo, exclua o arquivo Iniciando o processo e Espera deve ser feito em um segmento diferente do thread principal, porque essa operação não deve afetar o aplicativo. Meu aplicativo produz um relatório html. O usuário pode clicar em algum lugar e dizer View Report - agora eu recuperar o conteúdo do relatório em um arquivo temporário e iniciar o processo que lida com arquivos html, ou seja, o navegador padrão. O problema é que não consigo limpar, ou seja, excluir o arquivo temporário. Pediu Mar 4 09 às 15:35 meu processo converte arquivos para. Flv e os joga com javascript. Quando eu chamar a função sem um Thread. Sleep () após ele. Eu não posso obter a conversão nem o bcoz jogador a thread didnt tem tempo para terminar o seu trabalho antes da carga da página .. mas quando eu colocar um sono após a função. Thats quando im recebendo meu jogador. Ndash Grace Jul 4 11 at 11:24 Adicionando uma alternativa avançada a esta velha questão. Se você quiser esperar por um processo para sair sem bloquear nenhum thread e ainda suportar tempos limite, tente o seguinte: Novamente, a vantagem dessa abordagem em relação à resposta aceita é que você não está bloqueando nenhum segmento, o que reduz a sobrecarga de seu aplicativo . Eu provavelmente não usaria um processo separado para abrir um arquivo. Em vez disso, o ID provavelmente utiliza um thread de plano de fundo (se eu achasse que a operação levaria um longo período de tempo e bloqueava o segmento UI). Claro, este não é um bom exemplo de trabalho (não retorna nada) e não mostrei como a UI é atualizada (você precisa usar BeginInvoke no nível de UI porque um thread de fundo não pode atualizar o segmento UI). Mas essa abordagem geralmente é como faço para lidar com operações assíncronas. Respondeu Mar 4 09 às 15:46

Comments

Popular Posts