Tempo limite padrão do Waitforexit
Obter através da App Store Leia esta publicação em nosso aplicativo!
Process. WaitForExit (Int32)
No momento, estou trabalhando em um aplicativo Console Runner que possui o seguinte código para gerar o log e aguardar até que o processo seja concluído:
Eu tenho duas perguntas sobre esse pedaço de código.
Percebi que se o processo demorar mais de 30 segundos, a chamada p. ExitCode bombardeia. O que acontece se o meu processo demorar apenas 1 segundo, ele irá esperar 30 segundos de qualquer maneira ou o processo será avisado pelo CLR?
Se você tentar obter o ExitCode antes do processo ter saído, a tentativa lança uma exceção. Examine a propriedade HasExited primeiro para verificar se o processo associado foi finalizado.
Não há garantia de que, quando sua chamada para WaitForExit retornar, o processo será encerrado. Da documentação de WaitForExit:
A sobrecarga WaitForExit (Int32) é usada para fazer o segmento atual aguardar até que o processo associado seja finalizado. Essa sobrecarga instrui o componente Processo a aguardar uma quantidade limitada de tempo para que o processo saia. Se o processo associado não sair pelo final do intervalo porque a solicitação de término é negada, o falso é retornado ao procedimento de chamada. Você pode especificar um número negativo (Infinito) por milissegundos e Process. WaitForExit (Int32) se comportará da mesma maneira que a sobrecarga WaitForExit (). Se você passar 0 (zero) para o método, ele retorna verdadeiro somente se o processo já foi encerrado; Caso contrário, ele retorna imediatamente falso.
Observe que isso responde sua segunda pergunta. Se o processo for encerrado antes do tempo decorrido, o WaitForExit retornará.
Como você especificou um tempo limite finito, você permite a possibilidade de a função retornar antes do processo ter terminado. Então, você poderia escrever seu código como este:
Tempo limite padrão do Waitforexit
Obter através da App Store Leia esta publicação em nosso aplicativo!
O processo assíncrono é iniciado e aguarde que ele termine.
Eu sou novo no modelo de thread em. O que você usaria para:
iniciar um processo que lida com 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 aguardando deve ser feito em um segmento diferente que o segmento principal, porque esta operação não deve afetar o aplicativo.
O meu aplicativo produz um relatório html. O usuário pode clicar com o botão direito do mouse em algum lugar e dizer "Exibir Relatório" - agora recupero o conteúdo do relatório em um arquivo temporário e inicio o processo que lida com arquivos html, ou seja, o navegador padrão. O problema é que não consigo limpar, ou seja, eliminar o arquivo temporário.
"e espera deve ser assíncrono" - eu não estou tentando ser engraçado, mas isso não é uma contradição em termos? No entanto, como você está iniciando um processo, o evento Exit pode ajudar:
Se você quiser realmente esperar (tempo limite, etc.), então:
Para esperar assíncrono, talvez apenas use um tópico diferente?
Adicionando uma alternativa avançada a esta velha pergunta. Se você quiser esperar que um processo seja encerrado sem bloquear nenhum segmento 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 encadeamento, o que reduz a sobrecarga do seu aplicativo.
Experimente o seguinte código.
Provavelmente não usaria um processo separado para abrir um arquivo. Em vez disso, provavelmente utilizaria um thread de segundo plano (se eu pensasse que a operação levaria muito tempo e possivelmente bloquearia o thread da interface do usuário).
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 de UI). Mas essa abordagem geralmente é como eu administrai operações assíncronas.
Você pode usar o evento Exited na classe Process.
e nesse caso você pode lidar com as operações que você mencionou.
Exemplo de uso.
Resolvi assim:
Eu redirecionava a entrada, a saída e o erro e administrai a leitura dos fluxos de saída e erro. Esta solução funciona para o SDK 7- 8.1, tanto para o Windows 7 como para o Windows 8.
Eu tentei fazer uma aula que resolva seu problema usando a leitura de fluxo assíncrono, levando em conta Mark Byers, Rob, Stevejay responde. Ao fazê-lo, percebi que existe um erro relacionado à leitura assíncrona do fluxo de saída do processo.
Você não pode fazer isso:
Você receberá System. InvalidOperationException: StandardOut não foi redirecionado ou o processo ainda não começou.
Então, você deve iniciar a saída assíncrona lida após o processo ser iniciado:
Fazendo isso, faça uma condição de corrida porque o fluxo de saída pode receber dados antes de configurá-lo como assíncrono:
Então algumas pessoas podem dizer que você só precisa ler o fluxo antes de configurá-lo como assíncrono. Mas o mesmo problema ocorre. Haverá uma condição de corrida entre a leitura síncrona e configurará o fluxo em modo assíncrono.
Não há como conseguir uma leitura assíncrona segura de um fluxo de saída de um processo na forma real "Processo" e "ProcessStartInfo" foi projetado.
Você provavelmente está melhor usando a leitura assíncrona, como sugerido por outros usuários para o seu caso. Mas você deve estar ciente de que você pode perder algumas informações devido à condição de corrida.
Nenhuma das respostas acima está fazendo o trabalho.
A solução Rob trava e a solução 'Mark Byers' obtém a exceção descarta. (Eu tentei as "soluções" das outras respostas).
Então eu decidi sugerir outra solução:
Este código é depurado e funciona perfeitamente.
Introdução.
A resposta atualmente aceita não funciona (lança exceção) e há muitas soluções alternativas, mas nenhum código completo. Isso é, obviamente, desperdiçando muito tempo das pessoas porque esta é uma questão popular.
Combinando a resposta de Mark Byers e a resposta de Karol Tyl, escrevi um código completo baseado em como eu quero usar o método Process. Start.
Eu usei-o para criar um diálogo de progresso em torno dos comandos git. É assim que eu usei isso:
Em teoria, você também pode combinar stdout e stderr, mas não testei isso.
As outras soluções (incluindo o EM0) ainda estão bloqueadas para o meu aplicativo, devido a tempos de espera internos e ao uso de StandardOutput e StandardError pela aplicação gerada. Aqui está o que funcionou para mim:
Editar: inicialização adicionada de StartInfo para codificar a amostra.
Este post talvez esteja desactualizado, mas descobri a principal causa por que normalmente ele trava é devido ao excesso de pilha para o redirectStandardoutput ou se você tem redirectStandarderror.
Como os dados de saída ou os dados de erro são grandes, isso causará um tempo de espera, pois ele ainda está processando por tempo indefinido.
para resolver esse problema:
Eu acho que isso é uma abordagem simples e melhor (não precisamos do AutoResetEvent):
Eu estava tendo o mesmo problema, mas a razão era diferente. No entanto, isso 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. Agora recebi uma janela popup do Shell, que é indesejável, mas muito melhor do que o programa esperando que nada de particular aconteça. Então eu adicionei o seguinte trabalho para isso:
Agora, o único problema que me incomoda é o porquê isso está acontecendo no Windows 8, em primeiro lugar.
Eu sei que isso é velho, mas, depois de ler toda essa página, nenhuma das soluções estava funcionando para mim, embora eu não tentei Muhammad Rehan porque o código era um pouco difícil de seguir, embora eu acho que ele estava no caminho certo . Quando eu digo que não funcionou, isso não é inteiramente verdade, às vezes funcionaria bem, acho que é algo a ver com a duração da saída antes de uma marca EOF.
De qualquer forma, a solução que funcionou para mim era usar diferentes threads para ler o StandardOutput e StandardError e escrever as mensagens.
Espero que isso ajude alguém, que pensou que isso poderia ser tão difícil!
Depois de ler todos os posts aqui, resolvi a solução consolidada de Marko Avlijaš. No entanto, não resolveu todos os meus problemas.
Em nosso ambiente, temos um Serviço do Windows que está programado para executar centenas de diferentes. bat. cmd. exe. etc arquivos que se acumularam ao longo dos anos e foram escritas por muitas pessoas diferentes e em diferentes estilos. Não temos controle sobre a redação dos programas e programas; scripts, somos apenas responsáveis pelo agendamento, execução e relatórios sobre o sucesso / falha.
Então eu tentei praticamente todas as sugestões aqui com diferentes níveis de sucesso. A resposta de Marko foi quase perfeita, mas quando executado como um serviço, ele nem sempre captou stdout. Nunca cheguei ao fundo do porquê não.
fora da web.
Início Como iniciar um processo e aguardar a conclusão? #PowerShell.
Como iniciar um processo e aguardar a conclusão? #PowerShell.
Um dos novos Cmdlets introduzidos com o PowerShell v2 é chamado de Processo inicial. Ele inicia um processo no computador local e, opcionalmente, espera que ele seja completado se você usar o parâmetro do interruptor Cmdlet & # 8217; s Wait. Start-Process é implementado usando o método Start da classe System. Diagnostics. Process do NET Framework.
O primeiro lançamento do Windows PowerShell didn & # 8217; t veio com um Cmdlet como Start-Process. A função abaixo, também é chamado de Processo de Início, aguarda a conclusão do processo por padrão. Além disso, a função aguardará que todos os processos filho do processo sejam concluídos se você usar o parâmetro do parâmetro WaitForChildProcesses. Além disso, a função não vai esperar infinitamente, pois ele suporta um parâmetro Timeout. Por padrão, ele aguardará 600 segundos para que um processo (e processos filho) sejam concluídos. Como Posh v2 & # 8217; s Start-Process, a função usa a classe System. Diagnostics. Process NET Framework.
Então, por que esperar por processos infantis? Se é importante aguardar a conclusão do processo, talvez aguarde os processos infantis para completar os assuntos também. Por exemplo, o instalador da Oracle invoca Java e termina enquanto o Java Runtime ainda está ocupado ao instalar o software.
Além disso, considero um Timeout como obrigatório para evitar uma espera infinita devido a um processo suspenso (ou processo infantil).
BTW, é claro, você também pode usar a função no PowerShell v2. Lembre-se de que a função tem duas vantagens: aguarde processos infantis e tempo limite!
Alexey Matashkin.
Obrigado! Este foi muito útil!
Deixe uma resposta.
Categorias.
Postagens recentes.
Arquivos.
Novembro 2017 (1) outubro 2017 (2) maio de 2017 (1) março 2017 (1) fevereiro 2017 (1) janeiro 2017 (1) dezembro 2016 (1) maio 2016 (2) abril 2016 (1) fevereiro 2016 (2) Outubro de 2015 (3) abril de 2015 (1) janeiro de 2015 (3) dezembro de 2014 (1) outubro de 2014 (1) setembro de 2014 (2) julho de 2014 (1) maio de 2014 (3) abril de 2014 (1) março de 2014 (2) Junho de 2013 (2) maio de 2013 (3) dezembro de 2012 (2) outubro de 2012 (1) julho de 2012 (2) junho de 2012 (3) março de 2012 (3) janeiro de 2012 (1) outubro de 2011 (3) setembro de 2011 (1) Fevereiro de 2010 (2) Junho de 2010 (1) Maio de 2010 (1) Abril de 2010 (1) Fevereiro de 2010 (2) Janeiro de 2010 (2) Dezembro de 2009 (3) Novembro de 2009 (2) Outubro de 2009 (1) Agosto de 2009 (1) Junho de 2009 (2) março de 2009 (1) novembro de 2008 (1) julho de 2008 (2) maio de 2008 (2) abril de 2008 (1) fevereiro de 2008 (1) agosto de 2007 (2) agosto de 2006 (1) fevereiro de 2006 (1) Janeiro de 2006 (3) setembro de 2005 (12)
© 2017 Frank Peter Schultze | Tema desenvolvido por temas Weblizar.
Tempo limite padrão do Waitforexit
Eu tenho uma ferramenta que pode demorar muito tempo para executar, mais do que o tempo limite padrão do Powershell para iniciar o processo de 600 segundos. Então estou tentando encontrar uma maneira de aumentar esse tempo limite. Se o meu código de teste for executado assim sem um limite de tempo especificado:
Em seguida, o script corretamente aguarda que o comando seja executado e saia:
PS U: \ Meus documentos \ Desenvolvimento \ Powershell & gt; . \ ping_test. ps1.
No entanto, se eu tentar adicionar um tempo limite ao comando:
O processo de ping ainda é iniciado, mas imediatamente volta ao script do powershell e recebo esse resultado:
PS U: \ Meus documentos \ Desenvolvimento \ Powershell & gt; . \ ping_test. ps1.
Então, o que estou fazendo errado aqui?
O argumento para system. diagnostic. process. waitforexit () é em milissegundos.
Você disse para aguardar 1 segundo e, em seguida, saia.
Marcado como resposta por Tiger Li Microsoft employee terça-feira, 26 de julho de 2011 2:01 AM.
A Microsoft está realizando uma pesquisa on-line para entender sua opinião sobre o site da Technet. Se você optar por participar, a pesquisa on-line será apresentada quando você sair do site da Technet.
US Search Desktop.
Agradecemos seus comentários sobre como melhorar a Pesquisa do Yahoo. Este fórum é para você fazer sugestões de produtos e fornecer feedback pensativo. Estamos sempre tentando melhorar nossos produtos e podemos usar o feedback mais popular para fazer uma mudança positiva!
Se você precisar de assistência de qualquer tipo, visite nosso fórum de suporte comunitário ou encontre ajuda própria em nosso site de ajuda. Este fórum não é monitorado quanto a problemas relacionados ao suporte.
O fórum de comentários do produto do Yahoo agora requer uma ID e senha de Yahoo válidas para participar.
Agora você precisa fazer o login usando sua conta de e-mail do Yahoo para nos fornecer feedback e enviar votos e comentários às ideias existentes. Se você não possui uma ID do Yahoo ou a senha para sua ID do Yahoo, inscreva-se para uma nova conta.
Se você tiver uma ID e senha de Yahoo válidas, siga estas etapas, se desejar remover suas postagens, comentários, votos e / ou perfil no fórum de comentários do produto do Yahoo.
Vote em uma ideia existente () ou publique uma nova ideia ...
Ideias quentes Principais ideias Novas ideias Categoria Estado Meus comentários.
Não há um celular aberto no yahoo.
GODS WARS 50.
seus olhos não têm nada para brincar com dar-lhe o dom de ver novos olhos para os necessitados.
O olho do banco da América o dom da visão de novos olhos para os necessitados você é apenas adorável adeus boa sorte.
FAÇA COMPETIR-LHE UM PEQUENO EASER. EU PRECISO A SUA AJUDA E POSSO TENDER-LHE.
O Yahoo Search Bar sempre cobriu o 1º resultado da pesquisa.
É melhor flutuar.
pesquisa em leilão online.
Eu busco leilões on-line perto de mim e "Online Auction Hub" não aparece ainda, eles multipul leilão on-line e estão a apenas 4 milhas de mim.
GODS WARS 50.
GODS WARS 50.
747150202024123.
747150202024123.
747150202024123.
747150202024123.
00000.
10987654321.
10987654321.
Mais Leonardo DiCaprio, menos Jennifer Aniston. É uma atriz medíocre, & amp; chato. Espero que ela comece sua própria linha e se retire da vista.
Concentre-se em atores realmente bons, talentosos e interessantes na tela. Leonardo, Jennifer Lawrence, Viola Davis, Rachel McAdams, VIvica Fox, Jennifer Garner, Sarah Louise Parker, Michelle Geller, Brad Pitt, Tom Cruise, Ryan Gosling, John Cusack, Idris Elba, Joshua Morrow, Daniel Day Lewis, para citar apenas um pouco. Aniston é uma notícia antiga. Ela era ótima como Rachel, mas todos estão tão acima dela! Por que ela ainda tem tanta cobertura. Ninguém se importa. então sobre a colina.
Como entrar em contato comigo ...
Eu ainda tenho que ser capaz de: oginto Pitch. vid. Eu não estou ciente de como eu devo registrar minha marca e gostaria de ser contatado no que diz respeito ao inquérito. Parece que todos os meus sites de e-mail foram pirateados e não consegui avançar, como estou atualmente, mesmo sem um celular, mas eu tenho o mylaptop. por favor atualize minhas informações e atualize minhas informações e contatos e todas as informações relevantes que pertençam a mim na minha posição para a liberdade financeira. Agradeço o seu tempo e entre em contato com um e-mail seguro que podemos comunicar em linha telefônica privada ou privada. obrigado.
Sr. Steven J. Beard, cofundador PitchVid.
Eu ainda tenho que ser capaz de: oginto Pitch. vid. Eu não estou ciente de como eu devo registrar minha marca e gostaria de ser contatado no que diz respeito ao inquérito. Parece que todos os meus sites de e-mail foram pirateados e não consegui avançar, como estou atualmente, mesmo sem um celular, mas eu tenho o mylaptop. por favor atualize minhas informações e atualize minhas informações e contatos e todas as informações relevantes que pertençam a mim na minha posição para a liberdade financeira. Agradeço-lhe o seu tempo e contacte-me com um email seguro que estamos ... mais.
Não vê a sua ideia? Publique uma nova ideia ...
US Search Desktop.
Publicar uma nova ideia ... Todas as ideias Meu feedback Eu tenho um problema 29 Eu tenho uma sugestão 23 Outros 10 O que eu não gosto 35 O que eu gosto 1.
Feedback e Base de Conhecimento.
Dê retorno.
Deutschland Finanzen Mobile DF iOS 1 idéia España Finanzas Mobile DF iOS 7 ideias Contas Painel 33 ideias Opinião do anúncio 3 ideias Respostas TH 31 ideias Respostas TH 0 idéias Respostas Fórum UV (versão de teste) 10 ideias Austrália Ideias de celebridades 0 Austrália Finanças Mobile Android 0 ideias Austrália Estilo 0 idéias Austrália Yahoo Tech 0 idéias Autos Impulso 2 idéias Aviate 1.513 idéias Canadá Finanças 1.099 idéias Canadá Finanças Mobile Android 0 ideias Canadá Finanças Mobile DF iOS 3 idéias Canadá Finanças Mobile iOS 468 ideias Canadá Página inicial 5.11 idéias Canadá Filmes 14 ideias Notícias do Canadá 873 ideias Canadá com segurança 10 idéias Canadá Tela 128 idéias Canadá Clima 94 ideias Canadá Yahoo Beleza 0 idéias Canadá Yahoo Celebrity 10 ideias Canadá Yahoo Finanças 0 ideias Canadá Yahoo Filmes 10 ideias Canadá Yahoo Notícias 0 idéias Canadá Yahoo Estilo 21 idéias Futebol universitário Escolher & # 39; em 112 idéias TV conectada 361 idéias Corp Mail Test 1 1.313 idéias Corp Mail Testing 1.256 idéias Cricket 21 ideias Daily Fantasy 89 ideias Developer Netwo rk 1 ideia Double Down 86 ideias Fantasy Baseball 433 ideias Fantasy Basketball 398 ideias Fantasy Football 705 ideias Fantasy Hockey 344 ideias Fantasy Live Scoring on Matchup and Classical 807 ideias Fantasy Sports Aplicações Android 1.367 ideias Fantasy Sports iOS Apps 2.112 ideias Finanças 1.215 ideias Finanças - CA 495 idéias Finanças - ideias para EUA 9 Finanças Ideias ChartIQ 440 Finanças Mobile Web 403 idéias Finanças Portfolios 810 idéias Finanças Triagem de ações 35 idéias Finanças Tablet 44 idéias Flickr - Perfil 290 idéias Flickr Android 60 idéias Flickr para Apple TV 25 idéias Flickr Grupos 12 idéias Flickr Interno 0 ideias Flickr iOS Dogfooding 0 idéias Flickr iPad 145 idéias Flickr iPhone 345 ideias Flickr Nova Foto Página 8,030 idéias Flickr Pesquisa 0 ideias Food Revistas 0 idéias Jogos 3.147 ideias Mapas globais 1.023 ideias GS Mobile Web 42 ideias Health Pulse 3 ideias Home Page (Android) 1.689 ideias Home Page (iOS) 3.808 ideias Hong Kong Homepage 0 ideias Índia Celebridade 43 ideias Índia Finanças 493 ideias Índia Homepage 1.867 idéias Índia Estilo de vida 173 idéias Índia Filmes 84 idéias Índia Notícias 328 ideias Índia Parceiro Portal Tata 0 idéias Índia Parceiro Portal Tikona 0 idéias Índia com segurança 15 idéias Índia Tela 165 idéias Índia Tempo 30 ideias Índia Yahoo Beleza 0 idéias Índia Yahoo Celebridade 4 idéias Índia Yahoo Finanças 0 ideias Índia Yahoo Movies 16 ideias Índia Yahoo Notícias 0 ideias Índia Yahoo Estilo 14 ideias Indonésia Ideias da celebridade 38 Indonésia Página inicial 1.158 ideias Indonésia Notícias 170 ideias Indonésia com segurança 29 idéias Indonésia Ela 34 ideias Página inicial da Irlanda 90 idéias Jordânia Maktoob Homepage 419 idéias Comentários de mensagens por correio eletrônico 10 ideias Maktoob الطقس مكتوب 5 ideias Maktoob Celebridade 1 ideia Maktoob Entretenimento 10 ideias Maktoob Estilo de vida 0 ideias Maktoob Filmes 2 ideias Maktoob Notícias 182 idéias Maktoob Tela 15 ideias Maktoob Id. de estilo 1 Maktoob ألعاب مكتوب 0 ideias Maktoob شاشة مكتوب 28 ideias Malásia Homepage 17 ideias Malásia Notícias 58 ideias Malásia com segurança 6 ideias Malásia Video 0 ideias Malásia Tempo 1 idéia Merchant Solutions 1 ideia My Yahoo 31,920 ideias Meu Yahoo - backup 1 idéia Meu Yahoo - EUA 9,176 idéias Meu Yahoo arquivo 314 idéias Novo Correio 10,075 idéias Novo Correio * 3,165 idéias Nova Zelândia Negócios & Finanças 132 idéias Nova Zelândia Página inicial 1.039 idéias Nova Zelândia com segurança 3 idéias Nova Zelândia Tela 0 idéias Notícias do PH ANC 21 ideias Filipinas Celebridade 214 ideias Filipinas Página inicial 8 ideias Filipinas Notícias 123 idéias Filipinas com segurança 12 idéias Filipinas Vídeo 0 idéias Filipinas Tempo 3 idéias Pick N Roll 19 ideias Postmaster 43 ideias Pro Football Pick & # 39; em 103 ideias Retail Pulse 0 idéias Rivais 11 idéias com segurança 165 idéias Tela para idéias iOS 0 Busca extensões 97 idéias Pesquisar Downloads de produto 88 idéias Segurança 497 ideias Experiência de login 79 idéias Singapura Entretenimento 20 idéias Cingapura Finanças 230 idéias Cingapura Página inicial 1.050 idéias Cingapura Notícias 212 idéias Cingapura com segurança 11 idéias Cingapura Tela 19 idéias Cingapura Tempo 4 idéias Cingapura Yahoo Beleza 0 idéias Cingapura Yahoo Ideias da celebridade 4 Cingapura Yahoo Finanças 0 idéias Cingapura Yahoo Filmes 0 idéias Cingapura Yahoo Notícias 0 idéias Singapore Yahoo Style 4 ideas Idéias da celebridade da África do Sul Ideia da África do Sul 374 idéia s África do Sul Notícias 23 ideias Esportes Android 1,534 ideias Esportes CA 34 ideias Esportes iOS 1.025 ideias Desporto Redesign 3.189 ideias SportsReel 6 ideias StatTracker Beta 573 ideias Survival Futebol 81 ideias Taiwan Yahoo 名人 娛樂 0 ideias Taiwan Yahoo 運動 0 ideias Tailândia Safely 2 ideias Toolbar Mail App 216 ideas Toolbar Weather App 72 ideias Tourney Pick & # 39; em 41 ideias UK & amp; Irlanda Finanças 1.077 ideias UK & amp; Jogos da Irlanda 19 ideias UK & amp; Irlanda Homepage 442 ideias UK & amp; Irlanda Notícias 0 ideias UK & amp; Ireland News Balde interno 0 ideias UK & amp; Irlanda Notícias Lego 376 ideas UK & amp; Irlanda com segurança 38 ideias UK & amp; Irlanda TV 21 ideias UK & amp; Irlanda Vídeo 187 ideias UK & amp; Irlanda Tempo 99 ideias Reino Unido Respostas 1 ideia UK Daily Fantasy 1 ideia UK Finanças Mobile Android 12 ideias Reino Unido Finanças Mobile DF iOS 2 idéias UK Finanças Mobile iOS 308 idéias UK Yahoo Movies 23 ideias US Respostas 8,976 ideias Respostas dos EUA Mobile Web 2.115 idéias US Autos GS 442 ideias US Celebrity GS 661 ideias EUA Comentários 350 ideias US Finance Mobile Android 44 idéias US Finance Mobile iOS 562 idéias US Flickr 251 ideias EUA Grupos 4.117 ideias EUA Homepage B1 68 ideias US Homepage B2 33 ideias US Homepage B3 50 ideias US Homepage B4 33 ideias US Homepage B5 0 ideias Página inicial dos EUA M 7,021 ideias Página inicial dos EUA YDC 43 idéias US Homes GS 203 ideias US Live Web Insights 24 idéias US Mail 193 ideias US Mail 12,292 ideias EUA Mapas 3,491 ideias US Membership Desktop 8,115 ideias US Membership Mobile 91 ideias US Filmes GS 424 ideias US Music GS 195 ideias US News 6,023 ideias US Search App Android 2 ideias US Search App iOS 12 ideias US Search Chrome Extension 780 ideias US Chrome Chrome Extensão v2 2,197 ideias US Search Desktop 41 ideias US Search Desktop Bucket A 7 ideias US Search Desktop Bucket B 8 ideias US Pesquisar KG 22 ideias US Pesquisar Listagens locais 20,781 ideias EUA Busca Mobile Web 3 ideias EUA Busca Mozilla 1 ideia EUA Pesquisar estoque Citações 11 ideias EUA Pesquisa Tablet Web 1 ideia US Shine GS 1 idéia US Toolbar 5,548 ideias US Travel GS 207 idéias US TV GS 367 ideias US Weather 2,316 ideias EU Weather Bucket 0 ideias EU Weather Mobile 13 idéias US Weather Mobile Android 2 ideias Guia de vídeo Android 150 idéias Guia de vídeo iOS 206 idéias Guia de vídeo Teste 15 ideias Web Hosting 4 ideias Yahoo Acessibilidade 359 ideias Yahoo Autos 71 idéias Yahoo Beauty 100 ideias Yahoo Celebrity 0 ideias Yahoo Celebrity Canada 0 ideias Yahoo Decor 0 ideias Yahoo Entertainment 356 ideias Yahoo Esports 50 ideias Yahoo Feedback 0 ideias Yahoo Finance Feedback Forum 1 ideia Yahoo Finance IN Mobile Android 0 ideias Yahoo Finanças SG Mobile Android 1 ideia Yahoo FinançasReel 4 ideias Yahoo Food 118 ideias Yahoo Gemini 2 ideas Yahoo Health 90 ideias Yahoo Ajuda 265 ideas Yahoo Home 219 ideias Yahoo Home * 28 ideias Yahoo Lifestyle 168 ideias Yahoo Yahoo 0 ideias Yahoo Mail 2,224 ideias Yahoo Mail Aplicativo Android 405 ideias Yahoo Mail Basic 636 ideias Yahoo Mail iOS App 50 ideias Yahoo Mail Mobile Web 1 ideia Yahoo Makers 51 ideias Yahoo Messenger 84 idéias Yahoo Mobile Developer Suite 61 idéias Yahoo Mobile para ideias do telefone 15 Yahoo Mobile para idéias do Tablet 0 Yahoo Music 78 idéias Yahoo News Digest Android 870 idéias Yahoo News Digest iPad 0 idéias Yahoo News Digest iPhone 1,531 idéias Yahoo Newsroom Aplicativo para Android 56 idéias Yahoo Newsroom iOS App 34 ideias Yahoo Parenting 63 ideias Yahoo Politics 118 idéias Yahoo Publishing 13 ideias Yahoo Real Estate 2 ideias Yahoo Tech 459 idéias Yahoo Travel 143 idéias Yahoo TV 103 ideias Yahoo Ver 210 ideias Yahoo Weather Android 2.114 idéias Yahoo Weather iOS 22.745 ideias Yahoo! 7 Food App (iOS) 0 ideias Yahoo! 7 Página inicial Archive 57 ideas Yahoo! 7 Notícias (iOS) 23 ideias Yahoo! 7 Tela 0 ideias Yahoo! 7 TV FANGO App (Android) 1 ideia Yahoo! 7 aplicação TV FANGO (iOS) 1 ideia Yahoo! 7 TV Guide App (Android) 0 ideias Yahoo! 7 Guia de TV Guia (iOS) 1,248 ideias Yahoo! 7 Aplicação TV Plus7 (iOS) 0 ideias Yahoo! Centro de Feedback do Teste de Conceito 174 idéias Yahoo! Idéia de Contributor Network 1 Yahoo! Transliteração 29 ideias YAHOO! 7 Finanças 551 idéias Yahoo! 7 Jogos 9 ideias Yahoo! 7 Safely 19 ideias Yahoo7 Finanças Mobile DF iOS 12 ideias Yahoo7 Finanças Mobile iOS 217 ideias Yahoo7 Homepage 2.545 ideias.
Sua senha foi alterada.
Fizemos alterações para aumentar nossa segurança e restabelecer sua senha.
Acabamos de enviar-lhe um e-mail para. Clique no link para criar uma senha, depois volte aqui e faça o login.
Obter através da App Store Leia esta publicação em nosso aplicativo!
O processo assíncrono é iniciado e aguarde que ele termine.
Eu sou novo no modelo de thread em. O que você usaria para:
iniciar um processo que lida com 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 aguardando deve ser feito em um segmento diferente que o segmento principal, porque esta operação não deve afetar o aplicativo.
O meu aplicativo produz um relatório html. O usuário pode clicar com o botão direito do mouse em algum lugar e dizer "Exibir Relatório" - agora recupero o conteúdo do relatório em um arquivo temporário e inicio o processo que lida com arquivos html, ou seja, o navegador padrão. O problema é que não consigo limpar, ou seja, eliminar o arquivo temporário.
"e espera deve ser assíncrono" - eu não estou tentando ser engraçado, mas isso não é uma contradição em termos? No entanto, como você está iniciando um processo, o evento Exit pode ajudar:
Se você quiser realmente esperar (tempo limite, etc.), então:
Para esperar assíncrono, talvez apenas use um tópico diferente?
Adicionando uma alternativa avançada a esta velha pergunta. Se você quiser esperar que um processo seja encerrado sem bloquear nenhum segmento 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 encadeamento, o que reduz a sobrecarga do seu aplicativo.
Experimente o seguinte código.
Provavelmente não usaria um processo separado para abrir um arquivo. Em vez disso, provavelmente utilizaria um thread de segundo plano (se eu pensasse que a operação levaria muito tempo e possivelmente bloquearia o thread da interface do usuário).
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 de UI). Mas essa abordagem geralmente é como eu administrai operações assíncronas.
Você pode usar o evento Exited na classe Process.
e nesse caso você pode lidar com as operações que você mencionou.
Exemplo de uso.
Resolvi assim:
Eu redirecionava a entrada, a saída e o erro e administrai a leitura dos fluxos de saída e erro. Esta solução funciona para o SDK 7- 8.1, tanto para o Windows 7 como para o Windows 8.
Eu tentei fazer uma aula que resolva seu problema usando a leitura de fluxo assíncrono, levando em conta Mark Byers, Rob, Stevejay responde. Ao fazê-lo, percebi que existe um erro relacionado à leitura assíncrona do fluxo de saída do processo.
Você não pode fazer isso:
Você receberá System. InvalidOperationException: StandardOut não foi redirecionado ou o processo ainda não começou.
Então, você deve iniciar a saída assíncrona lida após o processo ser iniciado:
Fazendo isso, faça uma condição de corrida porque o fluxo de saída pode receber dados antes de configurá-lo como assíncrono:
Então algumas pessoas podem dizer que você só precisa ler o fluxo antes de configurá-lo como assíncrono. Mas o mesmo problema ocorre. Haverá uma condição de corrida entre a leitura síncrona e configurará o fluxo em modo assíncrono.
Não há como conseguir uma leitura assíncrona segura de um fluxo de saída de um processo na forma real "Processo" e "ProcessStartInfo" foi projetado.
Você provavelmente está melhor usando a leitura assíncrona, como sugerido por outros usuários para o seu caso. Mas você deve estar ciente de que você pode perder algumas informações devido à condição de corrida.
Nenhuma das respostas acima está fazendo o trabalho.
A solução Rob trava e a solução 'Mark Byers' obtém a exceção descarta. (Eu tentei as "soluções" das outras respostas).
Então eu decidi sugerir outra solução:
Este código é depurado e funciona perfeitamente.
Introdução.
A resposta atualmente aceita não funciona (lança exceção) e há muitas soluções alternativas, mas nenhum código completo. Isso é, obviamente, desperdiçando muito tempo das pessoas porque esta é uma questão popular.
Combinando a resposta de Mark Byers e a resposta de Karol Tyl, escrevi um código completo baseado em como eu quero usar o método Process. Start.
Eu usei-o para criar um diálogo de progresso em torno dos comandos git. É assim que eu usei isso:
Em teoria, você também pode combinar stdout e stderr, mas não testei isso.
As outras soluções (incluindo o EM0) ainda estão bloqueadas para o meu aplicativo, devido a tempos de espera internos e ao uso de StandardOutput e StandardError pela aplicação gerada. Aqui está o que funcionou para mim:
Editar: inicialização adicionada de StartInfo para codificar a amostra.
Este post talvez esteja desactualizado, mas descobri a principal causa por que normalmente ele trava é devido ao excesso de pilha para o redirectStandardoutput ou se você tem redirectStandarderror.
Como os dados de saída ou os dados de erro são grandes, isso causará um tempo de espera, pois ele ainda está processando por tempo indefinido.
para resolver esse problema:
Eu acho que isso é uma abordagem simples e melhor (não precisamos do AutoResetEvent):
Eu estava tendo o mesmo problema, mas a razão era diferente. No entanto, isso 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. Agora recebi uma janela popup do Shell, que é indesejável, mas muito melhor do que o programa esperando que nada de particular aconteça. Então eu adicionei o seguinte trabalho para isso:
Agora, o único problema que me incomoda é o porquê isso está acontecendo no Windows 8, em primeiro lugar.
Eu sei que isso é velho, mas, depois de ler toda essa página, nenhuma das soluções estava funcionando para mim, embora eu não tentei Muhammad Rehan porque o código era um pouco difícil de seguir, embora eu acho que ele estava no caminho certo . Quando eu digo que não funcionou, isso não é inteiramente verdade, às vezes funcionaria bem, acho que é algo a ver com a duração da saída antes de uma marca EOF.
De qualquer forma, a solução que funcionou para mim era usar diferentes threads para ler o StandardOutput e StandardError e escrever as mensagens.
Espero que isso ajude alguém, que pensou que isso poderia ser tão difícil!
Depois de ler todos os posts aqui, resolvi a solução consolidada de Marko Avlijaš. No entanto, não resolveu todos os meus problemas.
Em nosso ambiente, temos um Serviço do Windows que está programado para executar centenas de diferentes. bat. cmd. exe. etc arquivos que se acumularam ao longo dos anos e foram escritas por muitas pessoas diferentes e em diferentes estilos. Não temos controle sobre a redação dos programas e programas; scripts, somos apenas responsáveis pelo agendamento, execução e relatórios sobre o sucesso / falha.
Então eu tentei praticamente todas as sugestões aqui com diferentes níveis de sucesso. A resposta de Marko foi quase perfeita, mas quando executado como um serviço, ele nem sempre captou stdout. Nunca cheguei ao fundo do porquê não.
fora da web.
Início Como iniciar um processo e aguardar a conclusão? #PowerShell.
Como iniciar um processo e aguardar a conclusão? #PowerShell.
Um dos novos Cmdlets introduzidos com o PowerShell v2 é chamado de Processo inicial. Ele inicia um processo no computador local e, opcionalmente, espera que ele seja completado se você usar o parâmetro do interruptor Cmdlet & # 8217; s Wait. Start-Process é implementado usando o método Start da classe System. Diagnostics. Process do NET Framework.
O primeiro lançamento do Windows PowerShell didn & # 8217; t veio com um Cmdlet como Start-Process. A função abaixo, também é chamado de Processo de Início, aguarda a conclusão do processo por padrão. Além disso, a função aguardará que todos os processos filho do processo sejam concluídos se você usar o parâmetro do parâmetro WaitForChildProcesses. Além disso, a função não vai esperar infinitamente, pois ele suporta um parâmetro Timeout. Por padrão, ele aguardará 600 segundos para que um processo (e processos filho) sejam concluídos. Como Posh v2 & # 8217; s Start-Process, a função usa a classe System. Diagnostics. Process NET Framework.
Então, por que esperar por processos infantis? Se é importante aguardar a conclusão do processo, talvez aguarde os processos infantis para completar os assuntos também. Por exemplo, o instalador da Oracle invoca Java e termina enquanto o Java Runtime ainda está ocupado ao instalar o software.
Além disso, considero um Timeout como obrigatório para evitar uma espera infinita devido a um processo suspenso (ou processo infantil).
BTW, é claro, você também pode usar a função no PowerShell v2. Lembre-se de que a função tem duas vantagens: aguarde processos infantis e tempo limite!
Alexey Matashkin.
Obrigado! Este foi muito útil!
Deixe uma resposta.
Categorias.
Postagens recentes.
Arquivos.
Novembro 2017 (1) outubro 2017 (2) maio de 2017 (1) março 2017 (1) fevereiro 2017 (1) janeiro 2017 (1) dezembro 2016 (1) maio 2016 (2) abril 2016 (1) fevereiro 2016 (2) Outubro de 2015 (3) abril de 2015 (1) janeiro de 2015 (3) dezembro de 2014 (1) outubro de 2014 (1) setembro de 2014 (2) julho de 2014 (1) maio de 2014 (3) abril de 2014 (1) março de 2014 (2) Junho de 2013 (2) maio de 2013 (3) dezembro de 2012 (2) outubro de 2012 (1) julho de 2012 (2) junho de 2012 (3) março de 2012 (3) janeiro de 2012 (1) outubro de 2011 (3) setembro de 2011 (1) Fevereiro de 2010 (2) Junho de 2010 (1) Maio de 2010 (1) Abril de 2010 (1) Fevereiro de 2010 (2) Janeiro de 2010 (2) Dezembro de 2009 (3) Novembro de 2009 (2) Outubro de 2009 (1) Agosto de 2009 (1) Junho de 2009 (2) março de 2009 (1) novembro de 2008 (1) julho de 2008 (2) maio de 2008 (2) abril de 2008 (1) fevereiro de 2008 (1) agosto de 2007 (2) agosto de 2006 (1) fevereiro de 2006 (1) Janeiro de 2006 (3) setembro de 2005 (12)
© 2017 Frank Peter Schultze | Tema desenvolvido por temas Weblizar.
Комментариев нет:
Отправить комментарий