Vb process. start waitforexit
Eu estou chamando um aplicativo de 3ª parte que 'às vezes' funciona em VB (é um WCF auto-hospedado). Mas, às vezes, o aplicativo de terceiros é interrompido para sempre, então adicionei um temporizador de 90 segundos a ele. O problema é, como eu sei se a coisa expirou?
Código parece com isso:
O que eu gostaria de fazer é algo assim.
Verifique o valor de retorno do método - msdn. microsoft/en-us/library/ty0d8k56.aspx - se a chamada expirou, ele retornará False.
Houve problemas conhecidos no passado em que os aplicativos congelavam ao usar o WaitForExit.
Vb process. start waitforexit
Eu tenho um aplicativo que faz.
para iniciar outra aplicação 'ABC'. Eu quero esperar até que o aplicativo termine (processo morre) e continue minha execução. Como eu posso fazer isso?
Pode haver várias instâncias do aplicativo 'ABC' em execução ao mesmo tempo.
Eu acho que você só quer isso:
Veja a página do MSDN para o método. Ele também tem uma sobrecarga onde você pode especificar o tempo limite, então você não está esperando potencialmente para sempre.
Use Process. WaitForExit? Ou assine o evento Process. Exited se não quiser bloquear? Se isso não fizer o que você deseja, forneça mais informações sobre suas necessidades.
Eu faço o seguinte na minha candidatura:
Existem alguns recursos extras que você pode achar úteis.
Você pode usar a espera para sair ou você pode pegar a propriedade HasExited e atualizar sua interface do usuário para manter o usuário "informado" (gerenciamento de expectativa):
Como usar o Process. Start no Visual Basic.
Quando você precisa iniciar outro aplicativo usando o código VB.
O método Start do objeto Process é, possivelmente, uma das ferramentas mais subestimadas disponíveis para um programador. Como método, Start tem uma série de sobrecargas, que são conjuntos diferentes de parâmetros que determinam exatamente o que o método faz. As sobrecargas permitem que você especifique praticamente qualquer conjunto de parâmetros que você queira passar para outro processo quando for iniciado.
O que você pode fazer com o Process. Start é realmente limitado apenas pelos processos que você pode usar com ele.
Se você deseja exibir o arquivo Leia-me baseado em texto no Bloco de notas, é tão fácil quanto:
Isso pressupõe que o arquivo LeiaMe está na mesma pasta que o programa e que o Bloco de Notas é o aplicativo padrão para os tipos de arquivo. txt e está no caminho do ambiente do sistema.
Process. Start semelhante ao comando shell no VB6.
Para programadores familiarizados com o Visual Basic 6, Process. Start é um pouco como o comando VB 6 Shell. No VB 6, você usaria algo como:
Usando Process. Start.
Você pode usar esse código para iniciar o Bloco de Notas maximizado e criar um objeto ProcessStartInfo que possa ser usado para um controle mais preciso:
Iniciando um processo oculto.
Você pode até iniciar um processo oculto.
Mas tenha cuidado. A menos que você adicione mais código para encerrar o processo, provavelmente será necessário finalizá-lo no Gerenciador de tarefas. Normalmente, os processos ocultos são usados apenas com processos que não possuem nenhum tipo de interface de usuário.
Recuperando o nome de um processo.
Trabalhar com Process. Start como um objeto lhe dá muita capacidade. Por exemplo, você pode recuperar o nome do processo que foi iniciado. Este código irá mostrar o & # 34; bloco de notas & # 34; na janela de saída:
Isso era algo que você não poderia fazer com o comando VB6 Shell porque ele lançava o novo aplicativo de forma assíncrona. Usando WaitForExit pode causar o problema inverso porque você tem que iniciar um processo em um novo segmento se você precisar que ele seja executado de forma assíncrona. Por exemplo, se você precisar que os componentes permaneçam ativos em um formulário em que um processo foi iniciado e WaitForExit foi executado. Normalmente, esses componentes não estarão ativos. Codifique e veja por si mesmo.
Uma maneira de forçar o processo a parar é usar o método Kill.
Esse código aguarda dez segundos e termina o processo.
Descobri que um atraso forçado era necessário para permitir que o processo fosse concluído para evitar um erro.
Na maioria dos casos, provavelmente é uma boa ideia colocar seu processamento em um bloco Using para garantir que os recursos usados pelo processo sejam liberados.
Para tornar tudo isso ainda mais fácil de se trabalhar, há até mesmo um componente Process que você pode adicionar ao seu projeto para que você possa fazer muitas das coisas mostradas acima em tempo de design em vez de tempo de execução.
Uma das coisas que isso facilita muito é codificar eventos gerados pelo processo, como o evento quando o processo foi encerrado. Você também pode adicionar um manipulador usando um código como este:
Mas simplesmente selecionar o evento para o componente é muito mais fácil.
Vb process. start waitforexit
Estou tendo um problema com isso e espero que alguns de vocês possam lançar alguma luz sobre isso para mim? O bloco de código:
Eu mudei o URL, obviamente, mas isso não é importante. Quando eu tento executá-lo, isso me dá uma exceção no & quot; WaitForExit & quot; linha indicando & quot; Nenhum processo está associado a este objeto & quot;
Qualquer ajuda aqui seria muito apreciada!
O nome do arquivo do processo deve ser um arquivo executável.
SITE DO CONVERSOR DE CÓDIGO.
Editado por kaymaf terça-feira, 19 de outubro de 2010 18:32 Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:35.
O dois método funcionará.
SITE DO CONVERSOR DE CÓDIGO.
Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:44.
Todas as respostas.
O nome do arquivo do processo deve ser um arquivo executável.
SITE DO CONVERSOR DE CÓDIGO.
Editado por kaymaf terça-feira, 19 de outubro de 2010 18:32 Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:35.
O nome do arquivo do processo deve ser um arquivo executável.
SITE DO CONVERSOR DE CÓDIGO.
OH! Bem, isso explicaria isso então, mas no passado usar & quot; Process. Start (& quot; url aqui & quot;) sempre funcionou.
Você tem uma ideia de como eu poderia fazer isso para que ele abra o navegador padrão para acessar o site?
Kaymaf tem razão - isso faz sentido quando eu dou a ele um nome de arquivo ou url, isso funciona por causa da associação do arquivo. O seguinte funciona:
Eu vou com isso, mas se alguém tem uma idéia de como eu posso conseguir usar o navegador padrão, eu agradeceria.
O dois método funcionará.
SITE DO CONVERSOR DE CÓDIGO.
Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:44.
O dois método funcionará.
SITE DO CONVERSOR DE CÓDIGO.
Obrigado - boa informação. :)
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 (Int32)
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 Processo a aguardar o número especificado de milissegundos para o processo associado sair.
Assembly: System (no System. dll)
Parâmetros
O período de tempo, em milissegundos, para aguardar a saída do processo associado. O máximo é o maior valor possível de um inteiro de 32 bits, que representa infinito para o sistema operacional.
Valor de retorno.
true se o processo associado tiver saído; Caso contrário, false.
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 (Int32) 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 (Int32) 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 finita de tempo para o processo sair. Se o processo associado não sair no final do intervalo porque a solicitação para finalizar é negada, false é retornado para o procedimento de chamada. Você pode especificar um número negativo (Infinito) por milissegundos e Processo. WaitForExit (Int32) se comportará da mesma maneira que a sobrecarga WaitForExit (). Se você passar 0 (zero) para o método, ele retornará true somente se o processo já tiver saído; caso contrário, retorna imediatamente false.
No Framework 3.5 e em versões anteriores, se milissegundos fosse -1, a sobrecarga WaitForExit (Int32) aguardava milissegundos MaxValue (aproximadamente 24 dias), não indefinidamente.
Quando a saída padrão foi redirecionada para manipuladores de eventos assíncronos, é possível que o processamento de saída não seja concluído quando esse método retornar. Para garantir que o tratamento assíncrono de eventos tenha sido concluído, chame a sobrecarga WaitForExit () que não recebe nenhum parâmetro após receber um valor verdadeiro dessa sobrecarga. Para ajudar a garantir que o evento Exited seja tratado corretamente nos aplicativos do Windows Forms, defina a propriedade SynchronizingObject.
Quando um processo associado sai (é desligado 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 (Int32). 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.
Veja o exemplo de código para a propriedade ExitCode.
para confiança total para o chamador imediato. Este membro não pode ser usado por código parcialmente confiável.
Vb process. start waitforexit
Eu tenho o seguinte código no meu aplicativo:
System. Diagnostics. Process proc = new System. Diagnostics. Process ();
Uma vez que eu chamo isso através de outro aplicativo, o processo está pendente.
Então eu dei um tempo de 5 segundos e agora funciona bem. Mas preciso encontrar uma maneira melhor de corrigir esse problema, pois esse valor de tempo limite pode depender dos recursos do sistema e da quantidade de aplicativo de entrada que precisa ser processada.
Então, minha pergunta é se estamos criando um processo usando System. Diagnostics, o SO cria um thread separado e o torna como thread principal ou thread de interface do usuário?
Ou está criando um thread CLR que é o mesmo que System. Threading. Thread?
Se usarmos o pool de segmentos para criar um segmento de trabalho, essa seria uma opção melhor?
O pool de threads usa o agendamento do modo de usuário?
Aprecie sua ajuda nisso.
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Você está confuso com tópicos internos e externos ao seu aplicativo. Se você usar WaitForExit no seu thread da interface do usuário. ele bloqueará o thread da interface do usuário, deixando-o sem resposta. Se isso for um problema, crie o novo processo no evento DoWork de um BackgroundWorker. Quando o processo termina, o RunWorkerCompleteEvent será acionado, alertando seu thread da interface do usuário.
Marcado como Resposta Min Zhu Microsoft contingent staff, Moderador segunda-feira, 18 de julho de 2011 3:10.
Todas as respostas.
Esperar por um evento com EnableRaisingEvents = false significa que você está usando o WaitForExit como temporizador. Defina para um valor apropriado.
Esperar por um evento com EnableRaisingEvents = false significa que você está usando o WaitForExit como temporizador. Defina para um valor apropriado.
Eu dei 5000 como o valor e resolvi o problema. Minha preocupação é que funcionará de maneira semelhante sob diferentes recursos do sistema, tamanho do conteúdo de entrada, etc.?
O que acontecerá se o processo associado não sair no final do intervalo?
O Windows não é um sistema operacional em tempo real, portanto, qualquer temporizador dependerá do agendamento do sistema operacional. Supostamente, o System. Timers. Timer é o mais preciso.
& quot; O que acontecerá se o processo associado não sair no final do intervalo? & quot; Você desativou este recurso. Se é isso que você está tentando fazer, habilite-o. Se você não quiser bloquear o encadeamento usado para iniciar o processo, inicie-o a partir de um encadeamento em segundo plano. O BackgxroundWorker seria apropriado para isso.
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Você está confuso com tópicos internos e externos ao seu aplicativo. Se você usar WaitForExit no seu thread da interface do usuário. ele bloqueará o thread da interface do usuário, deixando-o sem resposta. Se isso for um problema, crie o novo processo no evento DoWork de um BackgroundWorker. Quando o processo termina, o RunWorkerCompleteEvent será acionado, alertando seu thread da interface do usuário.
Marcado como Resposta Min Zhu Microsoft contingent staff, Moderador segunda-feira, 18 de julho de 2011 3:10.
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.
Eu tenho um aplicativo que faz.
para iniciar outra aplicação 'ABC'. Eu quero esperar até que o aplicativo termine (processo morre) e continue minha execução. Como eu posso fazer isso?
Pode haver várias instâncias do aplicativo 'ABC' em execução ao mesmo tempo.
Eu acho que você só quer isso:
Veja a página do MSDN para o método. Ele também tem uma sobrecarga onde você pode especificar o tempo limite, então você não está esperando potencialmente para sempre.
Use Process. WaitForExit? Ou assine o evento Process. Exited se não quiser bloquear? Se isso não fizer o que você deseja, forneça mais informações sobre suas necessidades.
Eu faço o seguinte na minha candidatura:
Existem alguns recursos extras que você pode achar úteis.
Você pode usar a espera para sair ou você pode pegar a propriedade HasExited e atualizar sua interface do usuário para manter o usuário "informado" (gerenciamento de expectativa):
Como usar o Process. Start no Visual Basic.
Quando você precisa iniciar outro aplicativo usando o código VB.
O método Start do objeto Process é, possivelmente, uma das ferramentas mais subestimadas disponíveis para um programador. Como método, Start tem uma série de sobrecargas, que são conjuntos diferentes de parâmetros que determinam exatamente o que o método faz. As sobrecargas permitem que você especifique praticamente qualquer conjunto de parâmetros que você queira passar para outro processo quando for iniciado.
O que você pode fazer com o Process. Start é realmente limitado apenas pelos processos que você pode usar com ele.
Se você deseja exibir o arquivo Leia-me baseado em texto no Bloco de notas, é tão fácil quanto:
Isso pressupõe que o arquivo LeiaMe está na mesma pasta que o programa e que o Bloco de Notas é o aplicativo padrão para os tipos de arquivo. txt e está no caminho do ambiente do sistema.
Process. Start semelhante ao comando shell no VB6.
Para programadores familiarizados com o Visual Basic 6, Process. Start é um pouco como o comando VB 6 Shell. No VB 6, você usaria algo como:
Usando Process. Start.
Você pode usar esse código para iniciar o Bloco de Notas maximizado e criar um objeto ProcessStartInfo que possa ser usado para um controle mais preciso:
Iniciando um processo oculto.
Você pode até iniciar um processo oculto.
Mas tenha cuidado. A menos que você adicione mais código para encerrar o processo, provavelmente será necessário finalizá-lo no Gerenciador de tarefas. Normalmente, os processos ocultos são usados apenas com processos que não possuem nenhum tipo de interface de usuário.
Recuperando o nome de um processo.
Trabalhar com Process. Start como um objeto lhe dá muita capacidade. Por exemplo, você pode recuperar o nome do processo que foi iniciado. Este código irá mostrar o & # 34; bloco de notas & # 34; na janela de saída:
Isso era algo que você não poderia fazer com o comando VB6 Shell porque ele lançava o novo aplicativo de forma assíncrona. Usando WaitForExit pode causar o problema inverso porque você tem que iniciar um processo em um novo segmento se você precisar que ele seja executado de forma assíncrona. Por exemplo, se você precisar que os componentes permaneçam ativos em um formulário em que um processo foi iniciado e WaitForExit foi executado. Normalmente, esses componentes não estarão ativos. Codifique e veja por si mesmo.
Uma maneira de forçar o processo a parar é usar o método Kill.
Esse código aguarda dez segundos e termina o processo.
Descobri que um atraso forçado era necessário para permitir que o processo fosse concluído para evitar um erro.
Na maioria dos casos, provavelmente é uma boa ideia colocar seu processamento em um bloco Using para garantir que os recursos usados pelo processo sejam liberados.
Para tornar tudo isso ainda mais fácil de se trabalhar, há até mesmo um componente Process que você pode adicionar ao seu projeto para que você possa fazer muitas das coisas mostradas acima em tempo de design em vez de tempo de execução.
Uma das coisas que isso facilita muito é codificar eventos gerados pelo processo, como o evento quando o processo foi encerrado. Você também pode adicionar um manipulador usando um código como este:
Mas simplesmente selecionar o evento para o componente é muito mais fácil.
Vb process. start waitforexit
Estou tendo um problema com isso e espero que alguns de vocês possam lançar alguma luz sobre isso para mim? O bloco de código:
Eu mudei o URL, obviamente, mas isso não é importante. Quando eu tento executá-lo, isso me dá uma exceção no & quot; WaitForExit & quot; linha indicando & quot; Nenhum processo está associado a este objeto & quot;
Qualquer ajuda aqui seria muito apreciada!
O nome do arquivo do processo deve ser um arquivo executável.
SITE DO CONVERSOR DE CÓDIGO.
Editado por kaymaf terça-feira, 19 de outubro de 2010 18:32 Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:35.
O dois método funcionará.
SITE DO CONVERSOR DE CÓDIGO.
Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:44.
Todas as respostas.
O nome do arquivo do processo deve ser um arquivo executável.
SITE DO CONVERSOR DE CÓDIGO.
Editado por kaymaf terça-feira, 19 de outubro de 2010 18:32 Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:35.
O nome do arquivo do processo deve ser um arquivo executável.
SITE DO CONVERSOR DE CÓDIGO.
OH! Bem, isso explicaria isso então, mas no passado usar & quot; Process. Start (& quot; url aqui & quot;) sempre funcionou.
Você tem uma ideia de como eu poderia fazer isso para que ele abra o navegador padrão para acessar o site?
Kaymaf tem razão - isso faz sentido quando eu dou a ele um nome de arquivo ou url, isso funciona por causa da associação do arquivo. O seguinte funciona:
Eu vou com isso, mas se alguém tem uma idéia de como eu posso conseguir usar o navegador padrão, eu agradeceria.
O dois método funcionará.
SITE DO CONVERSOR DE CÓDIGO.
Marcado como Resposta Frank L. Smith terça-feira, 19 de outubro de 2010 18:44.
O dois método funcionará.
SITE DO CONVERSOR DE CÓDIGO.
Obrigado - boa informação. :)
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 (Int32)
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 Processo a aguardar o número especificado de milissegundos para o processo associado sair.
Assembly: System (no System. dll)
Parâmetros
O período de tempo, em milissegundos, para aguardar a saída do processo associado. O máximo é o maior valor possível de um inteiro de 32 bits, que representa infinito para o sistema operacional.
Valor de retorno.
true se o processo associado tiver saído; Caso contrário, false.
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 (Int32) 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 (Int32) 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 finita de tempo para o processo sair. Se o processo associado não sair no final do intervalo porque a solicitação para finalizar é negada, false é retornado para o procedimento de chamada. Você pode especificar um número negativo (Infinito) por milissegundos e Processo. WaitForExit (Int32) se comportará da mesma maneira que a sobrecarga WaitForExit (). Se você passar 0 (zero) para o método, ele retornará true somente se o processo já tiver saído; caso contrário, retorna imediatamente false.
No Framework 3.5 e em versões anteriores, se milissegundos fosse -1, a sobrecarga WaitForExit (Int32) aguardava milissegundos MaxValue (aproximadamente 24 dias), não indefinidamente.
Quando a saída padrão foi redirecionada para manipuladores de eventos assíncronos, é possível que o processamento de saída não seja concluído quando esse método retornar. Para garantir que o tratamento assíncrono de eventos tenha sido concluído, chame a sobrecarga WaitForExit () que não recebe nenhum parâmetro após receber um valor verdadeiro dessa sobrecarga. Para ajudar a garantir que o evento Exited seja tratado corretamente nos aplicativos do Windows Forms, defina a propriedade SynchronizingObject.
Quando um processo associado sai (é desligado 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 (Int32). 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.
Veja o exemplo de código para a propriedade ExitCode.
para confiança total para o chamador imediato. Este membro não pode ser usado por código parcialmente confiável.
Vb process. start waitforexit
Eu tenho o seguinte código no meu aplicativo:
System. Diagnostics. Process proc = new System. Diagnostics. Process ();
Uma vez que eu chamo isso através de outro aplicativo, o processo está pendente.
Então eu dei um tempo de 5 segundos e agora funciona bem. Mas preciso encontrar uma maneira melhor de corrigir esse problema, pois esse valor de tempo limite pode depender dos recursos do sistema e da quantidade de aplicativo de entrada que precisa ser processada.
Então, minha pergunta é se estamos criando um processo usando System. Diagnostics, o SO cria um thread separado e o torna como thread principal ou thread de interface do usuário?
Ou está criando um thread CLR que é o mesmo que System. Threading. Thread?
Se usarmos o pool de segmentos para criar um segmento de trabalho, essa seria uma opção melhor?
O pool de threads usa o agendamento do modo de usuário?
Aprecie sua ajuda nisso.
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Você está confuso com tópicos internos e externos ao seu aplicativo. Se você usar WaitForExit no seu thread da interface do usuário. ele bloqueará o thread da interface do usuário, deixando-o sem resposta. Se isso for um problema, crie o novo processo no evento DoWork de um BackgroundWorker. Quando o processo termina, o RunWorkerCompleteEvent será acionado, alertando seu thread da interface do usuário.
Marcado como Resposta Min Zhu Microsoft contingent staff, Moderador segunda-feira, 18 de julho de 2011 3:10.
Todas as respostas.
Esperar por um evento com EnableRaisingEvents = false significa que você está usando o WaitForExit como temporizador. Defina para um valor apropriado.
Esperar por um evento com EnableRaisingEvents = false significa que você está usando o WaitForExit como temporizador. Defina para um valor apropriado.
Eu dei 5000 como o valor e resolvi o problema. Minha preocupação é que funcionará de maneira semelhante sob diferentes recursos do sistema, tamanho do conteúdo de entrada, etc.?
O que acontecerá se o processo associado não sair no final do intervalo?
O Windows não é um sistema operacional em tempo real, portanto, qualquer temporizador dependerá do agendamento do sistema operacional. Supostamente, o System. Timers. Timer é o mais preciso.
& quot; O que acontecerá se o processo associado não sair no final do intervalo? & quot; Você desativou este recurso. Se é isso que você está tentando fazer, habilite-o. Se você não quiser bloquear o encadeamento usado para iniciar o processo, inicie-o a partir de um encadeamento em segundo plano. O BackgxroundWorker seria apropriado para isso.
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Você está confuso com tópicos internos e externos ao seu aplicativo. Se você usar WaitForExit no seu thread da interface do usuário. ele bloqueará o thread da interface do usuário, deixando-o sem resposta. Se isso for um problema, crie o novo processo no evento DoWork de um BackgroundWorker. Quando o processo termina, o RunWorkerCompleteEvent será acionado, alertando seu thread da interface do usuário.
Marcado como Resposta Min Zhu Microsoft contingent staff, Moderador segunda-feira, 18 de julho de 2011 3:10.
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.
Eu tenho o seguinte código no meu aplicativo:
System. Diagnostics. Process proc = new System. Diagnostics. Process ();
Uma vez que eu chamo isso através de outro aplicativo, o processo está pendente.
Então eu dei um tempo de 5 segundos e agora funciona bem. Mas preciso encontrar uma maneira melhor de corrigir esse problema, pois esse valor de tempo limite pode depender dos recursos do sistema e da quantidade de aplicativo de entrada que precisa ser processada.
Então, minha pergunta é se estamos criando um processo usando System. Diagnostics, o SO cria um thread separado e o torna como thread principal ou thread de interface do usuário?
Ou está criando um thread CLR que é o mesmo que System. Threading. Thread?
Se usarmos o pool de segmentos para criar um segmento de trabalho, essa seria uma opção melhor?
O pool de threads usa o agendamento do modo de usuário?
Aprecie sua ajuda nisso.
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Você está confuso com tópicos internos e externos ao seu aplicativo. Se você usar WaitForExit no seu thread da interface do usuário. ele bloqueará o thread da interface do usuário, deixando-o sem resposta. Se isso for um problema, crie o novo processo no evento DoWork de um BackgroundWorker. Quando o processo termina, o RunWorkerCompleteEvent será acionado, alertando seu thread da interface do usuário.
Marcado como Resposta Min Zhu Microsoft contingent staff, Moderador segunda-feira, 18 de julho de 2011 3:10.
Todas as respostas.
Esperar por um evento com EnableRaisingEvents = false significa que você está usando o WaitForExit como temporizador. Defina para um valor apropriado.
Esperar por um evento com EnableRaisingEvents = false significa que você está usando o WaitForExit como temporizador. Defina para um valor apropriado.
Eu dei 5000 como o valor e resolvi o problema. Minha preocupação é que funcionará de maneira semelhante sob diferentes recursos do sistema, tamanho do conteúdo de entrada, etc.?
O que acontecerá se o processo associado não sair no final do intervalo?
O Windows não é um sistema operacional em tempo real, portanto, qualquer temporizador dependerá do agendamento do sistema operacional. Supostamente, o System. Timers. Timer é o mais preciso.
& quot; O que acontecerá se o processo associado não sair no final do intervalo? & quot; Você desativou este recurso. Se é isso que você está tentando fazer, habilite-o. Se você não quiser bloquear o encadeamento usado para iniciar o processo, inicie-o a partir de um encadeamento em segundo plano. O BackgxroundWorker seria apropriado para isso.
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Eu preciso saber sobre isso, porque se System. Diagnostics também cria um segmento de plano de fundo ou segmento de trabalho, não adianta criar um thread separado novamente como não haverá nenhuma alteração no final do dia.
Qual é a diferença entre a implementação acima sobre a criação de um thread de segundo plano?
Você está confuso com tópicos internos e externos ao seu aplicativo. Se você usar WaitForExit no seu thread da interface do usuário. ele bloqueará o thread da interface do usuário, deixando-o sem resposta. Se isso for um problema, crie o novo processo no evento DoWork de um BackgroundWorker. Quando o processo termina, o RunWorkerCompleteEvent será acionado, alertando seu thread da interface do usuário.
Marcado como Resposta Min Zhu Microsoft contingent staff, Moderador segunda-feira, 18 de julho de 2011 3:10.
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.
No comments:
Post a Comment