Process. waitforexit não espera
Eu tenho o seguinte código e o método WaitForExit não está aguardando. Ele apenas executa o comando e avança para a próxima instrução. O comando é para desintalar um aplicativo e os parms são para o comando de desinstalação. A desinstalação funciona bem, mas eu preciso que a desinstalação termine antes de prosseguir. não está bloqueando.
Eu suspeito fortemente que o comentário de Andrey está certo - o processo que você está começando está saindo, mas tendo iniciado um novo processo em si.
A maneira simples de descobrir isso é imprimir o processo. Id antes de chamar WaitForExit e tente encontrar esse processo no gerenciador de tarefas. Eu suspeito que você vai descobrir que não vai estar lá.
Você pode querer dar uma volta, dormindo brevemente enquanto espera por outro indicador da desinstalação sendo concluída - como um determinado arquivo ou entrada de registro sendo removido. Não é o ideal, mas pode ser o melhor que você tem.
Process. waitforexit não espera
porque Process. WaitForExit não espera?
mantém loop e iniciando o aplicativo novamente e novamente!
Funcionou agora, não estava funcionando porque era assim clsProcess. WaitForExit (1000);
Esse código é empacotado em um loop while (true) e não há instruções break, throw ou return no corpo do loop. De fato, isso resultará em um loop infinito.
Se você quiser sair do loop uma vez que o WaitForExit tenha terminado, você precisará introduzir uma instrução break para fazer isso.
Verifique se if (Process. GetProcessesByName ("ServerAPPFileManager"). Length & gt; 0) não retorna false.
Bem, é assim que você codificou. Ele está aguardando a saída e, em seguida, na próxima declaração, ele começa novamente. E como Jared apontou, continua dando voltas sem saída. então começa, aguarda que ele saia e começa novamente.
Process. waitforexit não espera
Eu quero executar o SqlExpress configuração através da linha de comando, então eu estou usando o objeto de processo para isso, E depois de concluir a minha configuração do Sql Express eu quero executar o script de banco de dados para a instância atualmente instalada do Sql Express.
Eu escrevi o código como abaixo.
Neste WaitForExit () não funciona, ele interrompe a configuração do Sql Express.
Por favor, sugira se estou fazendo algo errado ou sugiro que haja outra forma de esperar pela conclusão do processo.
Agradeço antecipadamente.
Meu problema resolvido. Eu usei de outra maneira. Eu executei o código acima no meu aplicativo em vez de projeto de instalação.
Então eu executo a instalação do Sql Express no momento da execução do aplicativo.
Marcado como Resposta Michael Sun [MSFT] Microsoft employee, Moderador terça-feira, 25 de outubro de 2011 01:21.
Todas as respostas.
Simplesmente chamar WaitForExit () para um processo não deve ter nenhum efeito nesse processo, então acho que algo mais está acontecendo aqui.
Bem-vindo aos fóruns do MSDN!
Eu concordo com o Matthew. Você pode nos informar qual é a configuração do SqlExpress que está usando? É o arquivo de instalação do Microsoft SQL Server Express ou qualquer arquivo executável criado por você?
Michael Sun [MSFT]
Como está o problema agora? Se você precisar de alguma ajuda, não hesite em me dizer.
Tenha um bom dia!
Michael Sun [MSFT]
Meu problema resolvido. Eu usei de outra maneira. Eu executei o código acima no meu aplicativo em vez de projeto de instalação.
Então eu executo a instalação do Sql Express no momento da execução do aplicativo.
Marcado como Resposta Michael Sun [MSFT] Microsoft employee, Moderador terça-feira, 25 de outubro de 2011 01:21.
Fico feliz em ouvir isso!
Michael Sun [MSFT]
Por favor, lembre-se de marcar as respostas como respostas se elas ajudarem e desmarcá-las, se elas não ajudarem.
A Microsoft está realizando uma pesquisa online para entender sua opinião sobre o site da MSDN. Se você optar por participar, a pesquisa on-line será apresentada quando você sair do site do Msdn.
Process. waitforexit não espera
A sobrecarga WaitForExit () () () é usada para fazer o thread atual aguardar até que o processo associado termine. Este método instrui o componente Process a aguardar uma quantidade infinita de tempo para o processo sair. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface com o usuário, a solicitação para o sistema operacional finalizar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.
Essa sobrecarga assegura que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para 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 tiver sido redirecionada para manipuladores de eventos assíncronos.
Isto é claro para. O que faz você pensar que não espera que o processo do Note seja concluído? Quais são os sinais disso? Qual é a prova?
Processo p = new Process ();
MessageBox. Show (& quot; Agora o navegador deve estar fechado & quot;);
Exceto que você não consegue um objeto de processo que você possa usar. Se você tentar.
Dim myProc como novo processo ()
myProc = Process. Start (& quot; iexplore & quot ;, & quot; finance. yahoo/q/hp? s = & quot; símbolo +);
A Microsoft está realizando uma pesquisa online para entender sua opinião sobre o site da MSDN. Se você optar por participar, a pesquisa on-line será apresentada quando você sair do site do Msdn.
Processo . Método WaitForExit ()
A documentação de referência da API tem uma nova casa. Visite o Navegador da API em docs. microsoft para ver a nova experiência.
Instrui o componente Process a aguardar indefinidamente que o processo associado seja encerrado.
Assembly: System (no System. dll)
A configuração de espera não pôde ser acessada.
Nenhuma identificação de processo foi definida e uma Handle da qual a propriedade Id pode ser determinada não existe.
Não há processo associado a este objeto Process.
Você está tentando chamar WaitForExit () para um processo que está sendo executado em um computador remoto. Este método está disponível apenas para processos em execução no computador local.
WaitForExit () faz com que o segmento atual espere até que o processo associado termine. Deve ser chamado depois que todos os outros métodos forem chamados no processo. Para evitar o bloqueio do segmento atual, use o evento Exited.
Este método instrui o componente Process a aguardar uma quantidade infinita de tempo para que os manipuladores de processo e evento saiam. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface com o usuário, a solicitação para o sistema operacional finalizar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.
No Framework 3.5 e em versões anteriores, a sobrecarga WaitForExit () aguardava milissegundos MaxValue (aproximadamente 24 dias), não indefinidamente. Além disso, as versões anteriores não esperavam que os manipuladores de eventos saíssem se o tempo máximo de MaxValue fosse atingido.
Essa sobrecarga assegura que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para 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 tiver sido redirecionada para manipuladores de eventos assíncronos.
Quando um processo associado é encerrado (ou seja, quando é encerrado pelo sistema operacional por meio de uma finalização normal ou anormal), o sistema armazena informações administrativas sobre o processo e retorna ao componente que chamou WaitForExit (). O componente de processo pode acessar as informações, que inclui o ExitTime, usando o identificador para o processo de saída.
Como o processo associado foi encerrado, a propriedade Handle do componente não aponta mais para um recurso de processo existente. Em vez disso, o identificador pode ser usado apenas para acessar as informações do sistema operacional sobre o recurso do processo. O sistema está ciente de identificadores para processos que não foram liberados pelos componentes do processo, portanto, ele mantém as informações de ExitTime e identificador na memória até que o componente de processo especificamente libera os recursos. Por esse motivo, sempre que você chamar a instância Start for Process, chame Close quando o processo associado tiver terminado e você não precisar mais de nenhuma informação administrativa sobre ele. Close libera a memória alocada para o processo finalizado.
Consulte a seção Comentários da página de referência da propriedade StandardError.
para confiança total para o chamador imediato. Este membro não pode ser usado por código parcialmente confiável.
Processo . Método WaitForExit.
A documentação de referência da API tem uma nova casa. Visite o Navegador da API em docs. microsoft para ver a nova experiência.
Define o período de tempo para aguardar a saída do processo associado e bloqueia o thread atual de execução até que o tempo tenha transcorrido ou o processo tenha sido encerrado. Para evitar o bloqueio do segmento atual, use o evento Exited.
Para exemplos de código, consulte as páginas de referência de propriedade StandardError e ExitCode.
Assembly: System (no System. dll)
Instrui o componente Process a aguardar indefinidamente que o processo associado seja encerrado.
Instrui o componente Processo a aguardar o número especificado de milissegundos para o processo associado sair.
porque Process. WaitForExit não espera?
mantém loop e iniciando o aplicativo novamente e novamente!
Funcionou agora, não estava funcionando porque era assim clsProcess. WaitForExit (1000);
Esse código é empacotado em um loop while (true) e não há instruções break, throw ou return no corpo do loop. De fato, isso resultará em um loop infinito.
Se você quiser sair do loop uma vez que o WaitForExit tenha terminado, você precisará introduzir uma instrução break para fazer isso.
Verifique se if (Process. GetProcessesByName ("ServerAPPFileManager"). Length & gt; 0) não retorna false.
Bem, é assim que você codificou. Ele está aguardando a saída e, em seguida, na próxima declaração, ele começa novamente. E como Jared apontou, continua dando voltas sem saída. então começa, aguarda que ele saia e começa novamente.
Process. waitforexit não espera
Eu quero executar o SqlExpress configuração através da linha de comando, então eu estou usando o objeto de processo para isso, E depois de concluir a minha configuração do Sql Express eu quero executar o script de banco de dados para a instância atualmente instalada do Sql Express.
Eu escrevi o código como abaixo.
Neste WaitForExit () não funciona, ele interrompe a configuração do Sql Express.
Por favor, sugira se estou fazendo algo errado ou sugiro que haja outra forma de esperar pela conclusão do processo.
Agradeço antecipadamente.
Meu problema resolvido. Eu usei de outra maneira. Eu executei o código acima no meu aplicativo em vez de projeto de instalação.
Então eu executo a instalação do Sql Express no momento da execução do aplicativo.
Marcado como Resposta Michael Sun [MSFT] Microsoft employee, Moderador terça-feira, 25 de outubro de 2011 01:21.
Todas as respostas.
Simplesmente chamar WaitForExit () para um processo não deve ter nenhum efeito nesse processo, então acho que algo mais está acontecendo aqui.
Bem-vindo aos fóruns do MSDN!
Eu concordo com o Matthew. Você pode nos informar qual é a configuração do SqlExpress que está usando? É o arquivo de instalação do Microsoft SQL Server Express ou qualquer arquivo executável criado por você?
Michael Sun [MSFT]
Como está o problema agora? Se você precisar de alguma ajuda, não hesite em me dizer.
Tenha um bom dia!
Michael Sun [MSFT]
Meu problema resolvido. Eu usei de outra maneira. Eu executei o código acima no meu aplicativo em vez de projeto de instalação.
Então eu executo a instalação do Sql Express no momento da execução do aplicativo.
Marcado como Resposta Michael Sun [MSFT] Microsoft employee, Moderador terça-feira, 25 de outubro de 2011 01:21.
Fico feliz em ouvir isso!
Michael Sun [MSFT]
Por favor, lembre-se de marcar as respostas como respostas se elas ajudarem e desmarcá-las, se elas não ajudarem.
A Microsoft está realizando uma pesquisa online para entender sua opinião sobre o site da MSDN. Se você optar por participar, a pesquisa on-line será apresentada quando você sair do site do Msdn.
Process. waitforexit não espera
A sobrecarga WaitForExit () () () é usada para fazer o thread atual aguardar até que o processo associado termine. Este método instrui o componente Process a aguardar uma quantidade infinita de tempo para o processo sair. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface com o usuário, a solicitação para o sistema operacional finalizar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.
Essa sobrecarga assegura que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para 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 tiver sido redirecionada para manipuladores de eventos assíncronos.
Isto é claro para. O que faz você pensar que não espera que o processo do Note seja concluído? Quais são os sinais disso? Qual é a prova?
Processo p = new Process ();
MessageBox. Show (& quot; Agora o navegador deve estar fechado & quot;);
Exceto que você não consegue um objeto de processo que você possa usar. Se você tentar.
Dim myProc como novo processo ()
myProc = Process. Start (& quot; iexplore & quot ;, & quot; finance. yahoo/q/hp? s = & quot; símbolo +);
A Microsoft está realizando uma pesquisa online para entender sua opinião sobre o site da MSDN. Se você optar por participar, a pesquisa on-line será apresentada quando você sair do site do Msdn.
Processo . Método WaitForExit ()
A documentação de referência da API tem uma nova casa. Visite o Navegador da API em docs. microsoft para ver a nova experiência.
Instrui o componente Process a aguardar indefinidamente que o processo associado seja encerrado.
Assembly: System (no System. dll)
A configuração de espera não pôde ser acessada.
Nenhuma identificação de processo foi definida e uma Handle da qual a propriedade Id pode ser determinada não existe.
Não há processo associado a este objeto Process.
Você está tentando chamar WaitForExit () para um processo que está sendo executado em um computador remoto. Este método está disponível apenas para processos em execução no computador local.
WaitForExit () faz com que o segmento atual espere até que o processo associado termine. Deve ser chamado depois que todos os outros métodos forem chamados no processo. Para evitar o bloqueio do segmento atual, use o evento Exited.
Este método instrui o componente Process a aguardar uma quantidade infinita de tempo para que os manipuladores de processo e evento saiam. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface com o usuário, a solicitação para o sistema operacional finalizar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.
No Framework 3.5 e em versões anteriores, a sobrecarga WaitForExit () aguardava milissegundos MaxValue (aproximadamente 24 dias), não indefinidamente. Além disso, as versões anteriores não esperavam que os manipuladores de eventos saíssem se o tempo máximo de MaxValue fosse atingido.
Essa sobrecarga assegura que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para 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 tiver sido redirecionada para manipuladores de eventos assíncronos.
Quando um processo associado é encerrado (ou seja, quando é encerrado pelo sistema operacional por meio de uma finalização normal ou anormal), o sistema armazena informações administrativas sobre o processo e retorna ao componente que chamou WaitForExit (). O componente de processo pode acessar as informações, que inclui o ExitTime, usando o identificador para o processo de saída.
Como o processo associado foi encerrado, a propriedade Handle do componente não aponta mais para um recurso de processo existente. Em vez disso, o identificador pode ser usado apenas para acessar as informações do sistema operacional sobre o recurso do processo. O sistema está ciente de identificadores para processos que não foram liberados pelos componentes do processo, portanto, ele mantém as informações de ExitTime e identificador na memória até que o componente de processo especificamente libera os recursos. Por esse motivo, sempre que você chamar a instância Start for Process, chame Close quando o processo associado tiver terminado e você não precisar mais de nenhuma informação administrativa sobre ele. Close libera a memória alocada para o processo finalizado.
Consulte a seção Comentários da página de referência da propriedade StandardError.
para confiança total para o chamador imediato. Este membro não pode ser usado por código parcialmente confiável.
Processo . Método WaitForExit.
A documentação de referência da API tem uma nova casa. Visite o Navegador da API em docs. microsoft para ver a nova experiência.
Define o período de tempo para aguardar a saída do processo associado e bloqueia o thread atual de execução até que o tempo tenha transcorrido ou o processo tenha sido encerrado. Para evitar o bloqueio do segmento atual, use o evento Exited.
Para exemplos de código, consulte as páginas de referência de propriedade StandardError e ExitCode.
Assembly: System (no System. dll)
Instrui o componente Process a aguardar indefinidamente que o processo associado seja encerrado.
Instrui o componente Processo a aguardar o número especificado de milissegundos para o processo associado sair.
A sobrecarga WaitForExit () () () é usada para fazer o thread atual aguardar até que o processo associado termine. Este método instrui o componente Process a aguardar uma quantidade infinita de tempo para o processo sair. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface com o usuário, a solicitação para o sistema operacional finalizar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.
Essa sobrecarga assegura que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para 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 tiver sido redirecionada para manipuladores de eventos assíncronos.
Isto é claro para. O que faz você pensar que não espera que o processo do Note seja concluído? Quais são os sinais disso? Qual é a prova?
Processo p = new Process ();
MessageBox. Show (& quot; Agora o navegador deve estar fechado & quot;);
Exceto que você não consegue um objeto de processo que você possa usar. Se você tentar.
Dim myProc como novo processo ()
myProc = Process. Start (& quot; iexplore & quot ;, & quot; finance. yahoo/q/hp? s = & quot; símbolo +);
A Microsoft está realizando uma pesquisa online para entender sua opinião sobre o site da MSDN. Se você optar por participar, a pesquisa on-line será apresentada quando você sair do site do Msdn.
Processo . Método WaitForExit ()
A documentação de referência da API tem uma nova casa. Visite o Navegador da API em docs. microsoft para ver a nova experiência.
Instrui o componente Process a aguardar indefinidamente que o processo associado seja encerrado.
Assembly: System (no System. dll)
A configuração de espera não pôde ser acessada.
Nenhuma identificação de processo foi definida e uma Handle da qual a propriedade Id pode ser determinada não existe.
Não há processo associado a este objeto Process.
Você está tentando chamar WaitForExit () para um processo que está sendo executado em um computador remoto. Este método está disponível apenas para processos em execução no computador local.
WaitForExit () faz com que o segmento atual espere até que o processo associado termine. Deve ser chamado depois que todos os outros métodos forem chamados no processo. Para evitar o bloqueio do segmento atual, use o evento Exited.
Este método instrui o componente Process a aguardar uma quantidade infinita de tempo para que os manipuladores de processo e evento saiam. Isso pode fazer com que um aplicativo pare de responder. Por exemplo, se você chamar CloseMainWindow para um processo que tenha uma interface com o usuário, a solicitação para o sistema operacional finalizar o processo associado poderá não ser tratada se o processo for gravado para nunca inserir seu loop de mensagem.
No Framework 3.5 e em versões anteriores, a sobrecarga WaitForExit () aguardava milissegundos MaxValue (aproximadamente 24 dias), não indefinidamente. Além disso, as versões anteriores não esperavam que os manipuladores de eventos saíssem se o tempo máximo de MaxValue fosse atingido.
Essa sobrecarga assegura que todo o processamento tenha sido concluído, incluindo o tratamento de eventos assíncronos para 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 tiver sido redirecionada para manipuladores de eventos assíncronos.
Quando um processo associado é encerrado (ou seja, quando é encerrado pelo sistema operacional por meio de uma finalização normal ou anormal), o sistema armazena informações administrativas sobre o processo e retorna ao componente que chamou WaitForExit (). O componente de processo pode acessar as informações, que inclui o ExitTime, usando o identificador para o processo de saída.
Como o processo associado foi encerrado, a propriedade Handle do componente não aponta mais para um recurso de processo existente. Em vez disso, o identificador pode ser usado apenas para acessar as informações do sistema operacional sobre o recurso do processo. O sistema está ciente de identificadores para processos que não foram liberados pelos componentes do processo, portanto, ele mantém as informações de ExitTime e identificador na memória até que o componente de processo especificamente libera os recursos. Por esse motivo, sempre que você chamar a instância Start for Process, chame Close quando o processo associado tiver terminado e você não precisar mais de nenhuma informação administrativa sobre ele. Close libera a memória alocada para o processo finalizado.
Consulte a seção Comentários da página de referência da propriedade StandardError.
para confiança total para o chamador imediato. Este membro não pode ser usado por código parcialmente confiável.
Processo . Método WaitForExit.
A documentação de referência da API tem uma nova casa. Visite o Navegador da API em docs. microsoft para ver a nova experiência.
Define o período de tempo para aguardar a saída do processo associado e bloqueia o thread atual de execução até que o tempo tenha transcorrido ou o processo tenha sido encerrado. Para evitar o bloqueio do segmento atual, use o evento Exited.
Para exemplos de código, consulte as páginas de referência de propriedade StandardError e ExitCode.
Assembly: System (no System. dll)
Instrui o componente Process a aguardar indefinidamente que o processo associado seja encerrado.
Instrui o componente Processo a aguardar o número especificado de milissegundos para o processo associado sair.
Comments
Post a Comment