Quão permanente é WaitForExit (). Quero dizer, existe algo que uma alternativa pode fazer para quebrar a espera, caso contrário, eu executarei 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, do qual precisamos cancelar antes do tópico em execução. 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 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 Aplicação em execução, da 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ê receberá 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 segmento executando WaitForExit () ou usar a sobrecarga gt que permite especificar um timeout bool WaitForExit (int gt msToWait). Se você executá-lo em um fio 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 Agradeço aos caras as sugestões que são úteis. Aconselhará qual opção funcionou melhor. Al. Copyright cópia 2005-2016, TechTalkz. Todos os direitos reservados. Eu sou novo no modelo de thread em. O que você usaria para: iniciar um processo que manipule um arquivo (process. StartInfo. FileName fileName) aguarde até que o usuário feche o processo ou abandone o segmento depois de algum tempo se o usuário fechou o processo, exclua o arquivo Iniciando o processo e A espera deve ser feita em um segmento diferente do segmento principal, porque esta operação não deve afetar o aplicativo. Minha aplicação produz um relatório html. O usuário pode clicar corretamente em algum lugar e dizer View Report - agora eu recupero o conteúdo do relatório em um arquivo temporário e iniciar o processo que manipula arquivos html, ou seja, o navegador padrão. O problema é que não consigo limpar, ou seja, excluir o arquivo temporário. Perguntou Mar 4 09 às 15:35 meu processo converte arquivos para. flv e os joga com javascript. Quando eu chamo a função sem um Thread. Sleep () depois dele. Eu não consigo obter a conversão nem o bcoz do jogador que o thread não teve tempo para terminar seu trabalho antes da carga da página ... mas quando eu durmo após a função. Isso é quando estou recebendo o meu jogador. Ndash Grace 4 de julho 11 às 11:24 Adicionando uma alternativa avançada a esta velha pergunta. Se você deseja aguardar um processo para sair sem bloquear qualquer thread e ainda suportar tempos limite, tente o seguinte: Novamente, a vantagem dessa abordagem em comparação com a resposta aceita é que você não está bloqueando nenhum tópico, o que reduz a sobrecarga do seu aplicativo . Respondeu Jul 30 13 às 0:39 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 Eu sou novo no modelo de thread em. O que você usaria para: iniciar um processo que manipule um arquivo (process. StartInfo. FileName fileName) aguarde até que o usuário feche o processo ou abandone o segmento depois de algum tempo se o usuário fechou o processo, exclua o arquivo Iniciando o processo e A espera deve ser feita em um segmento diferente do segmento principal, porque esta operação não deve afetar o aplicativo. Minha aplicação produz um relatório html. O usuário pode clicar corretamente em algum lugar e dizer View Report - agora eu recupero o conteúdo do relatório em um arquivo temporário e iniciar o processo que manipula arquivos html, ou seja, o navegador padrão. O problema é que não consigo limpar, ou seja, excluir o arquivo temporário. Perguntou Mar 4 09 às 15:35 meu processo converte arquivos para. flv e os joga com javascript. Quando eu chamo a função sem um Thread. Sleep () depois dele. Eu não consigo obter a conversão nem o bcoz do jogador que o thread não teve tempo para terminar seu trabalho antes da carga da página ... mas quando eu durmo após a função. Isso é quando estou recebendo o meu jogador. Ndash Grace 4 de julho 11 às 11:24 Adicionando uma alternativa avançada a esta velha pergunta. Se você deseja aguardar um processo para sair sem bloquear qualquer thread e ainda suportar tempos limite, tente o seguinte: Novamente, a vantagem dessa abordagem em comparação com a resposta aceita é que você não está bloqueando nenhum tópico, o que reduz a sobrecarga do seu aplicativo . Respondeu Jul 30 13 às 0:39 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: 46Como permanente é WaitForExit (). Quero dizer, existe algo que uma alternativa pode fazer para quebrar a espera, caso contrário, eu executarei 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, do qual precisamos cancelar antes do tópico em execução. 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 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 Aplicação em execução, da 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ê receberá 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 segmento executando WaitForExit () ou usar a sobrecarga gt que permite especificar um timeout bool WaitForExit (int gt msToWait). Se você executá-lo em um fio 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 Agradeço aos caras as sugestões que são úteis. Aconselhará qual opção funcionou melhor. Al. Copyright cópia 2005-2016, TechTalkz. Todos os direitos reservados.
No comments:
Post a Comment