Vb system. diagnostics. process. start waitforexit
Obter através da App Store Leia esta publicação em nosso aplicativo!
Como usar Process. WaitForExit.
Estou chamando um aplicativo da 3ª parte que "às vezes" funciona no VB (é um WCF autônomo). Mas às vezes o aplicativo de terceiros pendura para sempre, então adicionei um temporizador de 90 segundos. O problema é, como eu sei se o tempo expirou?
O código parece assim:
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 expirar, ele retornará False.
Houve problemas conhecidos no passado em que os aplicativos congelariam ao usar WaitForExit.
Processo . Método WaitForExit.
A documentação de referência da API tem uma nova casa. Visite o navegador da API no docs. microsoft para ver a nova experiência.
Define o período de tempo para aguardar o processo associado para sair e bloqueia o segmento de execução atual até o tempo decorrido ou o processo foi encerrado. Para evitar o bloqueio do segmento atual, use o evento Exitado.
Para exemplos de código, consulte as páginas de referência da propriedade StandardError e ExitCode.
Assembly: System (no System. dll)
Instrui o componente Processo a esperar indefinidamente para que o processo associado saia.
Instrui o componente Processo a aguardar o número especificado de milissegundos para que o processo associado saia.
Como usar 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 subapreciadas disponíveis para um programador. Como um método, o Start tem uma série de sobrecargas, que são diferentes conjuntos de parâmetros que determinam exatamente o que o método faz. As sobrecargas permitem especificar qualquer conjunto de parâmetros que você possa querer passar para outro processo quando ele for iniciado.
O que você pode fazer com Process. Start é realmente limitado apenas pelos processos que você pode usar com ele.
Se você quiser exibir seu arquivo ReadMe baseado em texto no Bloco de notas, é tão fácil quanto:
Isso pressupõe que o arquivo ReadMe está na mesma pasta que o programa e que o Notepad é o aplicativo padrão para tipos de arquivos. txt e ele está no caminho do ambiente do sistema.
Process. Start semelhante ao Shell Command no VB6.
Para programadores familiarizados com o Visual Basic 6, Process. Start é um pouco como o comando VB 6 Shell. Na 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 você pode usar para um controle mais preciso:
Iniciando um processo oculto.
Você pode até começar um processo oculto.
Mas tenha cuidado. A menos que você adicione mais código para finalizar o processo, provavelmente você terá que terminá-lo no Gerenciador de Tarefas. Os processos ocultos normalmente são usados apenas com processos que não possuem qualquer tipo de interface de usuário.
Recuperando o Nome de um Processo.
Trabalhando com Process. Start como um objeto oferece muita capacidade. Por exemplo, você pode recuperar o nome do processo que foi iniciado. Este código exibirá & # 34; notepad & # 34; na janela de saída:
Isso foi algo que você não poderia fazer com o comando VB6 Shell porque lançou o novo aplicativo de forma assíncrona. O uso de WaitForExit pode causar o problema inverso porque você deve iniciar um processo em um novo tópico se precisar dele para executar de forma assíncrona. Por exemplo, se você precisa que os componentes permaneçam ativos em um formulário onde um processo foi iniciado e WaitForExit foi executado. Normalmente, esses componentes não foram ativos. Codifique-o e veja por si mesmo.
Uma maneira de forçar o processo a parar é usar o método Kill.
Este código aguarda dez segundos e depois termina o processo.
Descobri que um atraso forçado era necessário para permitir que o processo terminasse de sair para evitar um erro.
Na maioria dos casos, provavelmente é uma boa idéia colocar seu processamento em um bloco Usando para garantir que os recursos usados pelo processo sejam lançados.
Para tornar tudo isso ainda mais fácil de trabalhar, há mesmo um componente do Processo 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 torna muito mais fácil é codificar os eventos criados 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.
Inicie outro programa e aguarde até terminar em C #
O exemplo Abra um arquivo com a aplicação padrão do sistema em C # mostra como abrir um arquivo com o programa associado a esse tipo de arquivo. O arquivo é aberto e o programa que o iniciou continua sem esperar. Às vezes, no entanto, é útil para que o programa de partida aguarde até que o outro programa termine.
Este exemplo exibe um arquivo em um RichTextBox. Você pode editar o texto, mas o programa não oferece recursos de formatação. Em vez disso, ele permite que você edite o arquivo no WordPad. O código a seguir mostra como o programa lança o WordPad para editar o arquivo e depois espera que o WordPad termine.
Enquanto o programa espera que o WordPad termine, ele está preso e não pode fazer nada. Não pode atualizar sua exibição e não pode responder ao usuário. Para evitar estranheza, o código primeiro oculta o formulário do programa. Ele define ShowInTaskbar como falso para que o usuário ganhe & # 8217; t veja o ícone do programa na barra de tarefas ou na exibição Alt-Tab. Ele então esconde o programa por isso não é visível.
Em seguida, o código guarda o que está atualmente no RichTextBox, caso o usuário tenha feito alguma alteração.
O código então constrói um objeto ProcessStartInfo para descrever como ele iniciará o novo processo. Os parâmetros do construtor & # 8217; s dão o nome do programa a executar (wordpad. exe) e quaisquer parâmetros de linha de comando que o programa deve tomar. Nesse caso, o parâmetro único dá o nome do arquivo que o WordPad deve abrir. O código também define a propriedade WindowStyle do objeto, portanto o WordPad é iniciado maximizado.
Em seguida, o código cria um objeto Processo, define sua propriedade StartInfo no objeto ProcessStartInfo criado e chama seu método Start para iniciar o processo. Isso lança o WordPad.
O código então chama o método WaitForExit do processo & # 8216; espera até o WordPad sair. O programa está preso nesta linha de código aguardando até o WordPad sair.
Em seguida, o código recarrega o arquivo caso o usuário tenha feito alterações no WordPad. Ele termina restaurando o programa para a barra de tarefas e redisplayando seu formulário.
Vb system. diagnostics. process. start waitforexit
Resumo Fornece acesso a processos locais e remotos e permite iniciar e parar os processos do sistema local. Sintaxe C #
O componente Processo é uma ferramenta útil para iniciar, parar, controlar e monitorar aplicativos. Usando o componente Processo, você pode obter uma lista dos processos que estão sendo executados ou iniciar um novo processo. Um componente de processo é usado para acessar os processos do sistema. Depois que um componente do Processo foi inicializado, ele pode ser usado para obter informações sobre o processo em execução. Essas informações incluem o conjunto de threads, os módulos carregados (arquivos. dll e. exe) e informações de desempenho, como a quantidade de memória que o processo está usando.
O componente do processo obtém informações sobre um grupo de propriedades ao mesmo tempo. Depois que o componente Process obteve informações sobre um membro de qualquer grupo, armazenará os valores das outras propriedades nesse grupo e não obterá novas informações sobre os outros membros do grupo até você chamar o método Process. Refresh. Portanto, um valor de propriedade não é garantido para ser mais recente que a última chamada para o método Process. Refresh. As quebras do grupo dependem do sistema operacional.
Um processo do sistema é identificado de forma exclusiva no sistema pelo seu identificador de processo. Como muitos recursos do Windows, um processo também é identificado pelo identificador, que pode não ser exclusivo no computador. Um identificador é o termo genérico para um identificador de um recurso. O sistema operacional persiste no identificador do processo, que é acessado através da propriedade Process. Handle do componente Processo, mesmo quando o processo foi encerrado. Assim, você pode obter as informações administrativas do processo, como o Process. ExitCode (geralmente zero para o sucesso ou um código de erro diferente de zero) e o Process. ExitTime. As alças são um recurso extremamente valioso, de modo que as alças vazadas são mais virulentas do que a perda de memória.
System. Diagnostics. Process Lista de membros:
Inicializa uma nova instância da classe Process.
(herdado de SystemponentModelponent)
(herdado de SystemponentModelponent)
Obtém ou define o ISite do Componente.
(herdado de System. MarshalByRefObject)
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.
(herdado de SystemponentModelponent)
Libera todos os recursos usados pelo Componente.
(herdado de System. Object)
(herdado de System. Object)
(herdado de System. MarshalByRefObject)
Recupera o objeto de serviço vida útil atual que controla a política de vida para esta instância.
(herdado de System. Object)
(herdado de System. MarshalByRefObject)
Obtém um objeto de serviço ao longo da vida para controlar a política de vida para esta instância.
Iniciar (string fileName, argumentos de cadeia)
(herdado de System. Object)
(herdado de SystemponentModelponent)
Adiciona um manipulador de eventos para ouvir o evento Component. Disposed no componente.
(herdado de SystemponentModelponent)
Obtém um valor que indica se o Componente está atualmente no modo de design.
(herdado de SystemponentModelponent)
Obtém a lista de manipuladores de eventos anexados a este Componente.
Suporta a infraestrutura CLI de Origem Compartilhada e não se destina a ser usada diretamente do seu código.
(herdado de System. Object)
(herdado de SystemponentModelponent)
Retorna um objeto que representa um serviço fornecido pelo componente ou pelo seu contêiner.
(herdado de System. Object)
System. Diagnostics. Process Member Details.
Construtor padrão. Esse construtor é chamado por construtores de classes derivadas para inicializar o estado desse tipo. Sintaxe C #
Você tem duas opções para associar um novo componente Processo com um processo no computador. A primeira opção é usar o construtor para criar o componente Processo, definir os membros apropriados da propriedade Process. StartInfo e chamar Process. Start para associar o processo a um novo processo do sistema. A segunda opção é associar Processo com um processo de sistema em execução usando System. Diagnostics. Process. GetProcessById (não suportado na CLI de fonte compartilhada) ou um dos Processos System. Diagnostics. Process. Get (não suportado na CLI de origem compartilhada) ) valores de retorno.
Se você usar uma sobrecarga estática do método Process. Start para iniciar um novo processo do sistema, o método cria um novo componente do Processo e o associa ao processo.
Quando a propriedade ProcessStartInfo. UseShellExecute está definida como seu valor padrão, é verdade, você pode iniciar aplicativos e documentos de forma semelhante ao usar a caixa de diálogo Executar do menu Iniciar do Windows. Quando ProcessStartInfo. UseShellExecute é falso, você pode iniciar apenas executáveis.
Qualquer arquivo executável que você pode chamar a partir da linha de comando pode ser iniciado de duas maneiras: configurando os membros apropriados da propriedade Process. StartInfo e chamando o método Process. Start sem parâmetros ou passando o parâmetro apropriado para o Membro estático do Process. Start.
Você pode criar um componente de processo usando o construtor, uma das sobrecargas estáticas Process. Start ou qualquer um dos System. Diagnostics. Process. GetProcessById (não suportado na CLI de fonte compartilhada), System. Diagnostics. Process. GetProcesses (não suportado no CLI de origem compartilhada) ou System. Diagnostics. Process. GetProcessesByName (não suportado nos métodos CLI de origem compartilhada). Depois de ter feito isso, você tem uma visão sobre o processo associado. Esta não é uma visão dinâmica que se atualiza automaticamente quando as propriedades do processo mudaram na memória. Em vez disso, você deve chamar Process. Refresh para o componente para atualizar as informações da propriedade Processo em seu aplicativo.
Retornar ao topo.
Resumo Obtém o IContainer que contém o Componente. Sintaxe C #
Retornar ao topo.
Resumo Obtém um valor que indica se o Componente está atualmente no modo de design. Sintaxe C #
Retornar ao topo.
Resumo Obtém ou define se o evento Process. Exited deve ser gerado quando o processo termina. Sintaxe C #
Quando um processo associado sai depois de ser desligado pelo sistema operacional através de uma terminação normal ou anormal, o sistema operacional notifica cada componente de processo ao qual o processo foi associado, desde que o valor Process. EnableRaisingEvents do componente seja verdadeiro. Se um componente iniciou o processo, o componente pode acessar as informações administrativas para o processo associado, que ainda está sendo armazenado pelo sistema operacional. Essas informações incluem o Process. ExitTime e o Process. ExitCode.
Após o processo associado sair, o Process. Handle do componente já não aponta para um recurso de processo existente. Em vez disso, ele pode ser usado apenas para acessar as informações do sistema operacional sobre o recurso do processo. O sistema operacional está ciente de que há alças para processos encerrados que não foram lançados pelos componentes do Processo, portanto, ele mantém as informações Process. ExitTime e Process. Handle na memória.
Há um custo associado à procura de um processo para sair. Se Process. EnableRaisingEvents for verdadeiro, o evento Process. Exited será gerado quando o processo associado terminar. Os procedimentos que você especificou para o evento Process. Exited são executados nesse momento.
Às vezes, seu aplicativo inicia um processo, mas não precisa ser notificado de seu encerramento. Por exemplo, seu aplicativo pode iniciar o Bloco de notas para permitir que o usuário execute a edição de texto, mas não faça mais uso do aplicativo do bloco de notas. Você pode optar por não ser notificado quando o processo sair, porque não é relevante para a continuação da operação do seu aplicativo. Setting Process. EnableRaisingEvents para false guarda os recursos do sistema.
Retornar ao topo.
Resumo Obtém a lista de manipuladores de eventos anexados a este Componente. Sintaxe C #
Retornar ao topo.
Resumo Obtém o valor que o processo associado especificou quando ele foi encerrado. Sintaxe C #
O processo Process. Handle não é válido.
Os desenvolvedores geralmente indicam uma saída bem-sucedida por um valor Process. ExitCode de zero e designam erros por valores diferentes de zero que o método de chamada pode usar para identificar a causa de um término anormal do processo. Não é necessário seguir estas diretrizes, mas são a convenção.
Se você tentar obter o Process. ExitCode antes do processo ter saído, a tentativa lança uma exceção. Examine primeiro o recurso Process. HasExited para verificar se o processo associado foi encerrado.
Há duas maneiras de ser notificado quando o processo associado sai: de forma síncrona e assíncrona. A notificação síncrona baseia-se em chamar o método Process. WaitForExit para pausar o processamento do seu aplicativo até o componente associado sair. A notificação assíncrona depende do evento Process. Exited. Em ambos os casos, Process. EnableRaisingEvents deve ser definido como verdadeiro para o componente Processo para receber a notificação de que o processo foi encerrado.
Retornar ao topo.
Resumo Obtém o tempo que o processo associado saiu. Sintaxe C #
Retornar ao topo.
Resumo Retorna o identificador nativo do processo associado. Sintaxe C #
A instância do Processo foi anexada a um processo em execução, mas você não possui as permissões necessárias para obter um controle com direitos de acesso completo.
Apenas processos iniciados através de uma chamada para Process. Start, defina a propriedade Process. Handle das instâncias de Processo correspondentes.
Retornar ao topo.
Resumo Obtém um valor que indica se o processo associado foi encerrado. Sintaxe C #
Um processo pode terminar independentemente do seu código. Se você iniciou o processo usando este componente, o sistema atualiza automaticamente o valor de Process. HasExited, mesmo se o processo associado sair de forma independente.
Retornar ao topo.
Resumo Obtém o identificador exclusivo para o processo associado. Sintaxe C #
Não existe nenhum processo associado a este objeto Processo.
Você pode conectar um processo que está sendo executado em um computador local ou remoto para uma nova instância do Processo passando o identificador de processo para o método System. Diagnostics. Process. GetProcessById (não suportado no CLI de fonte compartilhada). System. Diagnostics. Process. GetProcessById (não suportado na CLI de fonte compartilhada) é um método estático que cria um novo componente e define a propriedade Process. Id para a nova instância do Processo automaticamente.
Os identificadores de processo podem ser reutilizados pelo sistema. O valor da propriedade Process. Id é exclusivo somente enquanto o processo associado está sendo executado. Após o processo ter terminado, o sistema pode reutilizar o valor da propriedade Process. Id para um processo não relacionado.
Como o identificador é exclusivo no sistema, você pode passá-lo para outros tópicos como uma alternativa para passar uma instância do Processo. Esta ação pode salvar os recursos do sistema ainda garantir que o processo esteja corretamente identificado.
Retornar ao topo.
Resumo Obtém ou define o ISite do Componente. Sintaxe C #
O valor da propriedade é nulo se o Componente for removido do seu IContainer. Atribuir nulo a esta propriedade não remove necessariamente o Componente do IContainer.
Um componente pode ou não ter um nome. Se um Componente receber um nome, o nome deve ser exclusivo entre outros objetos de Componente dentro do seu IContainer. O ISite armazena o nome do Componente; portanto, você só pode nomear um Componente se tiver um ISite associado a ele.
Retornar ao topo.
Resumo Obtém um StreamReader através do qual ler a saída de erro do aplicativo. Sintaxe C #
O componente Processo se comunica com um processo filho através de um pipe. Se um processo filho escrever dados suficientes para o tubo para preencher o buffer, a criança irá bloquear até que o pai lê os dados do tubo. Isso pode causar bloqueio se seu aplicativo estiver lendo toda a saída para erro padrão e saída padrão, por exemplo, usando o seguinte código C #.
Nessa instância, ambos os processos pai e filho seriam bloqueados, pois o tubo preenchido impede que o processo filho seja concluído, enquanto o processo pai espera indefinidamente para que o processo filho saia.
Esse problema pode ser resolvido movendo o ReadToEnd () antes do WaitForExit (), da seguinte forma.
Um problema semelhante surge se você redirecionar saída padrão e erro padrão e tente ler ambos, por exemplo, usando o seguinte código C #.
Nesse caso, se o processo filho escrever qualquer texto para erro padrão, ele bloqueará o processo, porque o processo pai não pode ler de erro padrão até que ele tenha terminado a leitura da saída padrão. No entanto, o processo pai não será lido a partir da saída padrão até o processo terminar. Uma solução recomendada para esta situação é criar dois tópicos para que seu aplicativo possa ler a saída de cada fluxo em um segmento separado.
Retornar ao topo.
Resumo Obtém um StreamWriter através do qual o aplicativo pode escrever entrada no processo. Sintaxe C #
Retornar ao topo.
Resumo Obtém um StreamReader através do qual o aplicativo pode ler a saída do processo. Sintaxe C #
O componente Processo se comunica com um processo filho através de um pipe. Se um processo filho escrever dados suficientes para o tubo para preencher o buffer, a criança irá bloquear até que o pai lê os dados do tubo. Isso pode causar bloqueio se seu aplicativo estiver lendo toda a saída para erro padrão e saída padrão, por exemplo, usando o seguinte código C #.
Nessa instância, ambos os processos pai e filho seriam bloqueados, pois o tubo preenchido impede que o processo filho seja concluído, enquanto o processo pai espera indefinidamente para que o processo filho saia.
Esse problema pode ser resolvido movendo o ReadToEnd () antes do WaitForExit (), da seguinte forma.
Um problema semelhante surge se você redirecionar saída padrão e erro padrão e tente ler ambos, por exemplo, usando o seguinte código C #.
Nesse caso, se o processo filho escrever qualquer texto para erro padrão, ele bloqueará o processo, porque o processo pai não pode ler de erro padrão até que ele tenha terminado a leitura da saída padrão. No entanto, o processo pai não será lido a partir da saída padrão até o processo terminar. Uma solução recomendada para esta situação é criar dois tópicos para que seu aplicativo possa ler a saída de cada fluxo em um segmento separado.
Retornar ao topo.
Resumo Obtém ou define as propriedades para passar para o Process. Start método do Processo. Sintaxe C #
O único membro Process. StartInfo necessário para definir é a propriedade ProcessStartInfo. FileName. Iniciando um processo especificando a propriedade ProcessStartInfo. FileName é semelhante a digitar as informações na caixa de diálogo Executar do menu Iniciar do Windows. Portanto, a propriedade ProcessStartInfo. FileName não precisa representar um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo instalado no sistema. Por exemplo, o ProcessStartInfo. FileName pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter um. doc se você tiver arquivos associados. doc com uma ferramenta de processamento de texto, como o Microsoft Word . Da mesma forma, da mesma forma que a caixa de diálogo Executar pode aceitar um nome de arquivo executável com ou sem a extensão. exe, a extensão. exe é opcional no membro ProcessStartInfo. FileName. Por exemplo, você pode definir a propriedade ProcessStartInfo. FileName como "Notepad. exe" ou "Bloco de notas".
Se o nome do arquivo envolve um arquivo não executável, como um arquivo. doc, você pode incluir um verbo especificando quais as ações a serem executadas no arquivo. Por exemplo, você pode configurar System. Diagnostics. ProcessStartInfo. Verb (não suportado na CLI de fonte compartilhada) para "Imprimir" para um arquivo que termina na extensão. doc. O nome do arquivo especificado na propriedade ProcessStartInfo. FileName não precisa ter uma extensão se você inserir manualmente um valor para a propriedade System. Diagnostics. ProcessStartInfo. Verb (não suportado na fonte CLI compartilhada). No entanto, se você usar a propriedade System. Diagnostics. ProcessStartInfo. Verbs (não suportado na fonte CLI compartilhada) para determinar quais verbos estão disponíveis, você deve incluir a extensão do arquivo.
Quando o processo é iniciado, o nome do arquivo é o arquivo que preenche a propriedade (somente de leitura) System. Diagnostics. Process. MainModule (não suportada na fonte CLI compartilhada). Se você deseja recuperar o arquivo executável que está associado ao processo após o processo ter iniciado, use a propriedade System. Diagnostics. Process. MainModule (não suportado na fonte CLI compartilhada). Se você deseja configurar o arquivo executável de uma instância Processo para o qual um processo associado não foi iniciado, use o membro ProcessStartInfo. FileName da propriedade Process. StartInfo. Como os membros da propriedade Process. StartInfo são argumentos que são passados para o Process. Start método de um processo, alterar a propriedade ProcessStartInfo. FileName após o processo associado iniciado não irá redefinir o System. Diagnostics. Process. MainModule (não suportado na propriedade CLI da fonte compartilhada). Essas propriedades são usadas apenas para inicializar o processo associado.
Retornar ao topo.
Resumo Obtém ou define o objeto usado para organizar as chamadas do manipulador de eventos que são emitidas como resultado de um evento de saída do processo. Sintaxe C #
Quando o evento Process. Exited é tratado por um componente visual do Windows Forms, como um botão, o acesso ao componente através do pool de threads do sistema pode não funcionar ou pode resultar em uma exceção. Evite isso configurando Process. SynchronizingObject para um componente do Windows Forms, o que faz com que os métodos que processam o evento Process. Exited sejam chamados no mesmo tópico no qual o componente foi criado.
Se o Processo for usado dentro do Visual Studio em um designer Windows Forms, o Process. SynchronizingObject será configurado automaticamente no controle que contém o Processo. Por exemplo, se você colocar um Processo em um designer para Form1 (que herda do Formulário), a propriedade Process. SynchronizingObject do Processo está configurada para a instância do Form1.
Normalmente, esta propriedade é definida quando o componente é colocado dentro de um controle ou formulário, porque esses componentes estão vinculados a um segmento específico.
Retornar ao topo.
Retornar ao topo.
Resumo Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. Sintaxe C #
O Tipo do objeto que o novo ObjRef irá fazer referência.
Valor de retorno: informações necessárias para gerar um proxy. Exceções.
Retornar ao topo.
Resumo lança todos os recursos usados pelo Componente. Sintaxe C #
Retornar ao topo.
) Resumo Suporta a infraestrutura CLI de Origem Compartilhada e não se destina a ser usada diretamente do seu código. Esse tipo é compatível com a infraestrutura CLI de Origem Compartilhada e não se destina a ser usado diretamente do seu código. Sintaxe C #
Retornar ao topo.
Veja a descrição do membro da classe base: System. Object. Equals C # Sintaxe:
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Veja a descrição do membro da classe base: System. Object. Finalize C # Sintaxe:
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Retornar ao topo.
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Resumo Recupera o objeto de serviço da vida atual que controla a política de vida para esta instância. Sintaxe C #
Retornar ao topo.
Resumo Retorna um objeto que representa um serviço fornecido pelo componente ou pelo seu contêiner. Sintaxe C #
Um serviço fornecido pelo Componente.
Valor de retorno: um objeto que representa um serviço fornecido pelo Componente.
Esse valor é nulo se o Componente não fornecer o serviço especificado.
Comentários Este método pode ser substituído por uma classe derivada. Veja também:
Retornar ao topo.
Veja a descrição do membro da classe base: System. Object. GetType C # Sintaxe:
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Resumo Obtém um objeto de serviço ao longo da vida para controlar a política de vida para esta instância. Sintaxe C #
Retornar ao topo.
Não existe nenhum processo associado a este objeto Processo.
Você está tentando chamar Process. Kill para um processo que está sendo executado em um computador remoto. O método está disponível apenas para processos em execução no computador local.
Os dados editados pelo processo ou recursos alocados ao processo podem ser perdidos se você chamar Process. Kill. Process. Kill provoca um término anormal do processo e deve ser usado somente quando necessário. System. Diagnostics. Process. CloseMainWindow (não suportado na CLI de fonte compartilhada) permite uma terminação ordenada do processo e fecha todas as janelas, por isso é preferível para aplicativos com uma interface. Se System. Diagnostics. Process. CloseMainWindow (não suportado na CLI de origem compartilhada) falhar, você pode usar Process. Kill para encerrar o processo. Process. Kill é a única maneira de encerrar processos que não possuem interfaces gráficas.
Você pode chamar Process. Kill e System. Diagnostics. Process. CloseMainWindow (não suportado na CLI de fonte compartilhada) apenas para processos que estão sendo executados no computador local. Você não pode causar processos em computadores remotos para sair. Você só pode visualizar informações para processos em execução em computadores remotos.
Retornar ao topo.
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Como uma alternativa ao Process. OnExited, você pode escrever seu próprio manipulador de eventos. Você cria seu próprio delegado de manipuladores de eventos e seu próprio método de tratamento de eventos.
Aumentar um evento invoca o manipulador de eventos através de um delegado. Para obter uma visão geral, veja o tópico conceitual no MSDN: fornecendo a funcionalidade doente.
Retornar ao topo.
Quando um componente de Processo está associado a um recurso de processo, os valores de propriedade do Processo são imediatamente preenchidos de acordo com o status do processo associado. Se a informação sobre o processo associado posteriormente for alterada, essas alterações não serão refletidas nos valores em cache do componente Processo. O componente Processo é um instantâneo do recurso de processo no momento em que eles estão associados. Para visualizar os valores atuais para o processo associado, chame o método Process. Refresh.
Retornar ao topo.
Esta sobrecarga de Process. Start não é um método estático. Você deve chamá-lo para uma instância da classe Process. Antes de chamar Process. Start, você deve primeiro especificar as informações de propriedade do Process. StartInfo para esta instância do Processo, porque essa informação é usada para determinar o recurso do processo para começar.
As outras sobrecargas do método Process. Start são membros estáticos. Não é necessário criar uma instância do componente Processo antes de chamar essas sobrecargas do método. Em vez disso, você pode chamar Process. Start para a própria classe Process e um novo componente Process é criado se o processo for iniciado. Ou, nulo é retornado se um processo foi reutilizado. O recurso de processo é automaticamente associado ao novo componente de Processo que é retornado pelo método Process. Start.
Os membros Process. StartInfo podem ser usados para duplicar a funcionalidade da caixa de diálogo Executar do menu Iniciar do Windows. Qualquer coisa que pode ser digitada em uma linha de comando pode ser iniciada configurando os valores apropriados na propriedade Process. StartInfo. A única propriedade Process. StartInfo que deve ser definida é a propriedade ProcessStartInfo. FileName. A propriedade ProcessStartInfo. FileName não precisa ser um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo que esteja instalado no sistema. Por exemplo, a propriedade ProcessStartInfo. FileName pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter uma extensão. doc se você tiver arquivos. doc associados com uma ferramenta de processamento de texto, como como Microsoft Word.
Na linha de comando, você pode especificar as ações a serem tomadas para determinados tipos de arquivos. Por exemplo, você pode imprimir documentos ou editar arquivos de texto. Especifique essas ações usando o membro System. Diagnostics. ProcessStartInfo. Verb (não suportado no CLI de origem compartilhada) da propriedade Process. StartInfo. Para outros tipos de arquivos, você pode especificar argumentos de linha de comando quando você inicia o arquivo na caixa de diálogo Executar. Por exemplo, você pode passar um URL como um argumento se você especificar seu navegador como ProcessStartInfo. FileName. Esses argumentos podem ser especificados no membro ProcessStartInfo. Arguments da propriedade Process. StartInfo.
Uma nota sobre estados de apartamentos em segmentos gerenciados é necessária aqui. Quando ProcessStartInfo. UseShellExecute é verdadeiro na propriedade Process. StartInfo do componente do processo, verifique se você definiu um modelo de threading em seu aplicativo definindo o atributo [STAThread] no método main (). Caso contrário, um thread gerenciado pode estar em um estado desconhecido ou colocar no estado MTA, o último dos quais está em conflito com ProcessStartInfo. UseShellExecute sendo verdadeiro. Alguns métodos exigem que o estado do apartamento não seja desconhecido. Se o estado não for definido explicitamente, quando o aplicativo encontrar esse método, ele é padrão para MTA e, uma vez definido, o estado do apartamento não pode ser alterado. No entanto, o MTA faz com que uma exceção seja lançada quando o shell do sistema operacional estiver gerenciando o segmento.
Exemplo O exemplo a seguir demonstra como iniciar um dos quatro processos (Word, Excel, Internet Explorer ou Bloco de Notas), dependendo da informação passada para o procedimento que descreve um documento. O exemplo atribui informações a um objeto de processo existente e inicia o procedimento.
StartProcess leva dois parâmetros. O primeiro parâmetro é o nome de um documento, ou seja, qualquer arquivo que tenha uma ação aberta associada (por exemplo, MyDoc. doc ou MyFile. txt). O segundo parâmetro é a extensão do documento (.doc,.txt,.htm. Ou. xls). Usando a extensão, o procedimento StartProcess associa um aplicativo com a propriedade Process. StartInfo do componente Processo. Então, o documento em si é passado como um argumento com o qual o aplicativo é aberto. No caso do Excel ou do Word, o documento é aberto para ser impresso. No caso do Notepad ou do Internet Explorer, o documento só é carregado na janela do aplicativo.
O nome do arquivo e os argumentos são os mesmos que você digitaria na caixa de diálogo Executar do menu Iniciar do Windows.
Retornar ao topo.
) Resumo Inicia o recurso de processo que é especificado pelo parâmetro que contém as informações de início do processo (por exemplo, o nome do processo para iniciar) e associa o recurso com um novo componente de Processo. Sintaxe C #
O ProcessStartInfo que contém as informações que são usadas para iniciar o processo, incluindo o nome do arquivo e os argumentos da linha de comando.
Valor de retorno: um novo componente do Processo que está associado ao recurso de processo ou nulo se nenhum recurso de processo for iniciado (por exemplo, se um processo existente for reutilizado). Exceções.
Essa sobrecarga permite que você inicie um processo sem primeiro criar uma nova instância de Processo. Usar esta sobrecarga com um parâmetro ProcessStartInfo é uma alternativa às etapas explícitas da criação de uma nova instância de Processo, definindo suas propriedades Process. StartInfo e Processando chamada. Etapa para a instância do Processo.
Usando uma instância ProcessStartInfo como o parâmetro permite chamar Process. Start com o maior controle sobre o que é passado na chamada para iniciar o processo. Se você precisa passar apenas um nome de arquivo ou um nome de arquivo e argumentos, não é necessário criar uma nova instância do ProcessStartInfo, embora essa seja uma opção. A única propriedade Process. StartInfo que deve ser definida é a propriedade ProcessStartInfo. FileName. A propriedade ProcessStartInfo. FileName não precisa representar um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo que esteja instalado no sistema. Por exemplo, a propriedade ProcessStartInfo. FileName pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter uma extensão. doc se você tiver arquivos. doc associados com uma ferramenta de processamento de texto, como como Microsoft Word.
Ao contrário das outras sobrecargas, a sobrecarga de Process. Start que não tem parâmetros não é um membro estático. Use essa sobrecarga quando você já criou uma instância de Processo, informações de início especificadas (incluindo o nome do arquivo) e deseja iniciar um recurso de processo e associá-lo à instância do Processo existente. Use uma das sobrecargas estáticas quando quiser criar um novo componente Processo em vez de iniciar um processo para um componente existente. Tanto esta sobrecarga quanto a sobrecarga que não tem parâmetros permitem que você especifique as informações de início do recurso de processo usando uma instância ProcessStartInfo.
Uma nota sobre estados de apartamentos em segmentos gerenciados é necessária aqui. Quando ProcessStartInfo. UseShellExecute é verdadeiro no parâmetro startInfo, verifique se você definiu um modelo de encadeamento na sua aplicação definindo o atributo [STAThread] no método main (). Caso contrário, um thread gerenciado pode estar em um estado desconhecido ou colocar no estado MTA, o último dos quais está em conflito com ProcessStartInfo. UseShellExecute sendo verdadeiro. Alguns métodos exigem que o estado do apartamento não seja desconhecido. Se o estado não for definido explicitamente, quando o aplicativo encontrar esse método, ele é padrão para MTA e, uma vez definido, o estado do apartamento não pode ser alterado. No entanto, o MTA faz com que uma exceção seja lançada quando o shell do sistema operacional estiver gerenciando o segmento.
Retornar ao topo.
) Resumo Inicia um recurso de processo especificando o nome de um documento ou arquivo de aplicativo e associa o recurso com um novo componente de Processo. Sintaxe C #
O nome de um documento ou arquivo de aplicativo para executar no processo.
Valor de retorno: um novo componente de processo que está associado ao recurso de processo ou nulo, se nenhum recurso de processo for iniciado (por exemplo, se um processo existente for reutilizado). Exceções.
Essa sobrecarga permite que você inicie um processo sem primeiro criar uma nova instância de Processo. A sobrecarga é uma alternativa às etapas explícitas da criação de uma nova instância de Processo, definindo o membro ProcessStartInfo. FileName da propriedade Process. StartInfo e processo de chamada. Inicialize para a instância do Processo.
Iniciando um processo especificando seu nome de arquivo é semelhante a digitar as informações na caixa de diálogo Executar do menu Iniciar do Windows. Portanto, o nome do arquivo não precisa representar um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo instalado no sistema. Por exemplo, o nome do arquivo pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter um. doc se você tiver arquivos associados. doc com uma ferramenta de processamento de texto, como o Microsoft Word. Da mesma forma, da mesma maneira que a caixa de diálogo Executar pode aceitar um nome de arquivo executável com ou sem a extensão. exe, a extensão. exe é opcional no parâmetro fileName. Por exemplo, você pode definir o parâmetro fileName como "Notepad. exe" ou "Bloco de notas".
Ao contrário das outras sobrecargas, a sobrecarga de Process. Start que não tem parâmetros não é um membro estático. Use essa sobrecarga quando você já criou uma instância de Processo, informações de início especificadas (incluindo o nome do arquivo) e deseja iniciar um recurso de processo e associá-lo à instância do Processo existente. Use uma das sobrecargas estáticas quando quiser criar um novo componente Processo em vez de iniciar um processo para um componente existente. Tanto esta sobrecarga como a sobrecarga que não possui parâmetros permitem que você especifique o nome do arquivo do recurso de processo para começar.
Uma nota sobre estados de apartamentos em segmentos gerenciados é necessária aqui. Quando ProcessStartInfo. UseShellExecute é verdadeiro na propriedade Process. StartInfo do componente do processo, verifique se você definiu um modelo de threading em seu aplicativo definindo o atributo [STAThread] no método main (). Caso contrário, um thread gerenciado pode estar em um estado desconhecido ou colocar no estado MTA, o último dos quais está em conflito com ProcessStartInfo. UseShellExecute sendo verdadeiro. Alguns métodos exigem que o estado do apartamento não seja desconhecido. Se o estado não for definido explicitamente, quando o aplicativo encontrar esse método, ele é padrão para MTA e, uma vez definido, o estado do apartamento não pode ser alterado. No entanto, o MTA faz com que uma exceção seja lançada quando o shell do sistema operacional estiver gerenciando o segmento.
Exemplo O exemplo a seguir demonstra como abrir o bloco de notas passando o nome do aplicativo para o método Process. Start. Como o Notepad pode receber uma solicitação de fechamento antes que a janela seja aberta e inicializada, o exemplo faz com que o aplicativo aguarde até que o Bloco de notas esteja no loop de mensagem e no estado ocioso antes de receber a entrada. The example results in the opening of a blank Notepad window. Veja também:
Return to top.
) Summary Starts a process resource by specifying the name of an application and a set of command line arguments, and associates the resource with a new Process component. C# Syntax:
The name of an application file to run in the process.
Command line arguments to pass when starting the process.
Return Value: A new Process component that is associated with the process, or null , if no process resource is started (for example, if an existing process is reused). Exceções.
This overload lets you start a process without first creating a new Process instance. The overload is an alternative to the explicit steps of creating a new Process instance, setting the ProcessStartInfo. FileName and ProcessStartInfo. Arguments members of the Process. StartInfo property, and calling Process. Start for the Process instance.
Starting a process by specifying its file name and arguments is similar to typing the file name and command line arguments in the Run dialog box of the Windows Start menu. Therefore, the file name does not need to represent an executable file. It can be of any file type for which the extension has been associated with an application installed on the system. For example the file name can have a. txt extenstion if you have associated text files with an editor, such as Notepad, or it can have a. doc if you have associated. doc files with a word processing tool, such as Microsoft Word. Similarly, in the same way that the Run dialog box can accept an executable file name with or without the. exe extension, the. exe extension is optional in the fileName parameter. For example, you can set the fileName parameter to either "Notepad. exe" or "Notepad". If the fileName parameter represents an executable file, the arguments parameter may represent a file to act upon, such as the text file in Notepad. exe myfile. txt .
Unlike the other overloads, the overload of Process. Start that has no parameters is not a static member. Use that overload when you have already created a Process instance, specified start information (including the file name), and want to start a process resource and associate it with the existing Process instance. Use one of the static overloads when you want to create a new Process component rather than start a process for an existing component. Both this overload and the overload that has no parameters allow you to specify the file name of the process resource to start and command line arguments to pass.
A note about apartment states in managed threads is necessary here. When ProcessStartInfo. UseShellExecute is true on the process component's Process. StartInfo property, make sure you have set a threading model on your application by setting the attribute [STAThread] on the main() method. Otherwise, a managed thread can be in an unknown state or put in the MTA state, the latter of which conflicts with ProcessStartInfo. UseShellExecute being true . Some methods require that the apartment state not be unknown . If the state is not explicitly set, when the application encounters such a method, it defaults to MTA , and once set, the apartment state cannot be changed. However, MTA causes an exception to be thrown when the operating system shell is managing the thread.
Example The following example demonstrates how to start Internet Explorer as a process from within your application. The example passes the URL microsoft as an argument to the Process. Start method. The file name and arguments pair is the same as you would type directly into the Run dialog box (which is accessed from the Windows Start menu). The example results in the opening of the browser window. Veja também:
Return to top.
See base class member description: System. Object. ToString C# Syntax:
For more information on members inherited from System. Object click on the link above.
Return to top.
Não existe nenhum processo associado a este objeto Processo.
You are attempting to call Process. WaitForExit for a process running on a remote computer. The method is available only for processes that are running on the local computer.
This overload of Process. WaitForExit instructs the Process component to wait an infinite amount of time for the process to exit. Isso pode fazer com que um aplicativo pare de responder. For example, if you call System. Diagnostics. Process. CloseMainWindow (not supported on the shared source CLI) for a process that has a user interface, the request to the operating system to terminate the associated process might not be handled if the process is written to never enter its message loop.
When an associated process exits (is shut down by the operation system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called Process. WaitForExit. O componente Processo pode, então, acessar a informação, que inclui o Process. ExitTime, usando Process. Handle para o processo encerrado.
Como o processo associado saiu, a propriedade Process. Handle do componente não mais aponta 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 das alças para os processos que não foram lançados pelos componentes do Processo, portanto, ele mantém as informações Process. ExitTime e Process. Handle na memória até que o componente Processo liberte especificamente os recursos. Por esse motivo, sempre que você chamar Process. Start para uma instância Process, ligue Process. Fechar quando o processo associado foi encerrado e você não precisa mais de informações administrativas sobre isso. Process. Close libera a memória alocada para o processo encerrado.
Return to top.
) Summary Instructs the Process component to wait the specified number of milliseconds for the associated process to exit. C# Syntax:
A quantidade de tempo, em milissegundos, para aguardar o encerramento do processo associado. O máximo é o maior valor possível de um inteiro de 32 bits, que representa infinito para o sistema operacional.
Return Value: true if the associated process has exited; caso contrário, falso. Exceções.
Não existe nenhum processo associado a este objeto Processo.
Resumo Fornece acesso a processos locais e remotos e permite iniciar e parar os processos do sistema local. Sintaxe C #
O componente Processo é uma ferramenta útil para iniciar, parar, controlar e monitorar aplicativos. Usando o componente Processo, você pode obter uma lista dos processos que estão sendo executados ou iniciar um novo processo. Um componente de processo é usado para acessar os processos do sistema. Depois que um componente do Processo foi inicializado, ele pode ser usado para obter informações sobre o processo em execução. Essas informações incluem o conjunto de threads, os módulos carregados (arquivos. dll e. exe) e informações de desempenho, como a quantidade de memória que o processo está usando.
O componente do processo obtém informações sobre um grupo de propriedades ao mesmo tempo. Depois que o componente Process obteve informações sobre um membro de qualquer grupo, armazenará os valores das outras propriedades nesse grupo e não obterá novas informações sobre os outros membros do grupo até você chamar o método Process. Refresh. Portanto, um valor de propriedade não é garantido para ser mais recente que a última chamada para o método Process. Refresh. As quebras do grupo dependem do sistema operacional.
Um processo do sistema é identificado de forma exclusiva no sistema pelo seu identificador de processo. Como muitos recursos do Windows, um processo também é identificado pelo identificador, que pode não ser exclusivo no computador. Um identificador é o termo genérico para um identificador de um recurso. O sistema operacional persiste no identificador do processo, que é acessado através da propriedade Process. Handle do componente Processo, mesmo quando o processo foi encerrado. Assim, você pode obter as informações administrativas do processo, como o Process. ExitCode (geralmente zero para o sucesso ou um código de erro diferente de zero) e o Process. ExitTime. As alças são um recurso extremamente valioso, de modo que as alças vazadas são mais virulentas do que a perda de memória.
System. Diagnostics. Process Lista de membros:
Inicializa uma nova instância da classe Process.
(herdado de SystemponentModelponent)
(herdado de SystemponentModelponent)
Obtém ou define o ISite do Componente.
(herdado de System. MarshalByRefObject)
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.
(herdado de SystemponentModelponent)
Libera todos os recursos usados pelo Componente.
(herdado de System. Object)
(herdado de System. Object)
(herdado de System. MarshalByRefObject)
Recupera o objeto de serviço vida útil atual que controla a política de vida para esta instância.
(herdado de System. Object)
(herdado de System. MarshalByRefObject)
Obtém um objeto de serviço ao longo da vida para controlar a política de vida para esta instância.
Iniciar (string fileName, argumentos de cadeia)
(herdado de System. Object)
(herdado de SystemponentModelponent)
Adiciona um manipulador de eventos para ouvir o evento Component. Disposed no componente.
(herdado de SystemponentModelponent)
Obtém um valor que indica se o Componente está atualmente no modo de design.
(herdado de SystemponentModelponent)
Obtém a lista de manipuladores de eventos anexados a este Componente.
Suporta a infraestrutura CLI de Origem Compartilhada e não se destina a ser usada diretamente do seu código.
(herdado de System. Object)
(herdado de SystemponentModelponent)
Retorna um objeto que representa um serviço fornecido pelo componente ou pelo seu contêiner.
(herdado de System. Object)
System. Diagnostics. Process Member Details.
Construtor padrão. Esse construtor é chamado por construtores de classes derivadas para inicializar o estado desse tipo. Sintaxe C #
Você tem duas opções para associar um novo componente Processo com um processo no computador. A primeira opção é usar o construtor para criar o componente Processo, definir os membros apropriados da propriedade Process. StartInfo e chamar Process. Start para associar o processo a um novo processo do sistema. A segunda opção é associar Processo com um processo de sistema em execução usando System. Diagnostics. Process. GetProcessById (não suportado na CLI de fonte compartilhada) ou um dos Processos System. Diagnostics. Process. Get (não suportado na CLI de origem compartilhada) ) valores de retorno.
Se você usar uma sobrecarga estática do método Process. Start para iniciar um novo processo do sistema, o método cria um novo componente do Processo e o associa ao processo.
Quando a propriedade ProcessStartInfo. UseShellExecute está definida como seu valor padrão, é verdade, você pode iniciar aplicativos e documentos de forma semelhante ao usar a caixa de diálogo Executar do menu Iniciar do Windows. Quando ProcessStartInfo. UseShellExecute é falso, você pode iniciar apenas executáveis.
Qualquer arquivo executável que você pode chamar a partir da linha de comando pode ser iniciado de duas maneiras: configurando os membros apropriados da propriedade Process. StartInfo e chamando o método Process. Start sem parâmetros ou passando o parâmetro apropriado para o Membro estático do Process. Start.
Você pode criar um componente de processo usando o construtor, uma das sobrecargas estáticas Process. Start ou qualquer um dos System. Diagnostics. Process. GetProcessById (não suportado na CLI de fonte compartilhada), System. Diagnostics. Process. GetProcesses (não suportado no CLI de origem compartilhada) ou System. Diagnostics. Process. GetProcessesByName (não suportado nos métodos CLI de origem compartilhada). Depois de ter feito isso, você tem uma visão sobre o processo associado. Esta não é uma visão dinâmica que se atualiza automaticamente quando as propriedades do processo mudaram na memória. Em vez disso, você deve chamar Process. Refresh para o componente para atualizar as informações da propriedade Processo em seu aplicativo.
Retornar ao topo.
Resumo Obtém o IContainer que contém o Componente. Sintaxe C #
Retornar ao topo.
Resumo Obtém um valor que indica se o Componente está atualmente no modo de design. Sintaxe C #
Retornar ao topo.
Resumo Obtém ou define se o evento Process. Exited deve ser gerado quando o processo termina. Sintaxe C #
Quando um processo associado sai depois de ser desligado pelo sistema operacional através de uma terminação normal ou anormal, o sistema operacional notifica cada componente de processo ao qual o processo foi associado, desde que o valor Process. EnableRaisingEvents do componente seja verdadeiro. Se um componente iniciou o processo, o componente pode acessar as informações administrativas para o processo associado, que ainda está sendo armazenado pelo sistema operacional. Essas informações incluem o Process. ExitTime e o Process. ExitCode.
Após o processo associado sair, o Process. Handle do componente já não aponta para um recurso de processo existente. Em vez disso, ele pode ser usado apenas para acessar as informações do sistema operacional sobre o recurso do processo. O sistema operacional está ciente de que há alças para processos encerrados que não foram lançados pelos componentes do Processo, portanto, ele mantém as informações Process. ExitTime e Process. Handle na memória.
Há um custo associado à procura de um processo para sair. Se Process. EnableRaisingEvents for verdadeiro, o evento Process. Exited será gerado quando o processo associado terminar. Os procedimentos que você especificou para o evento Process. Exited são executados nesse momento.
Às vezes, seu aplicativo inicia um processo, mas não precisa ser notificado de seu encerramento. Por exemplo, seu aplicativo pode iniciar o Bloco de notas para permitir que o usuário execute a edição de texto, mas não faça mais uso do aplicativo do bloco de notas. Você pode optar por não ser notificado quando o processo sair, porque não é relevante para a continuação da operação do seu aplicativo. Setting Process. EnableRaisingEvents para false guarda os recursos do sistema.
Retornar ao topo.
Resumo Obtém a lista de manipuladores de eventos anexados a este Componente. Sintaxe C #
Retornar ao topo.
Resumo Obtém o valor que o processo associado especificou quando ele foi encerrado. Sintaxe C #
O processo Process. Handle não é válido.
Os desenvolvedores geralmente indicam uma saída bem-sucedida por um valor Process. ExitCode de zero e designam erros por valores diferentes de zero que o método de chamada pode usar para identificar a causa de um término anormal do processo. Não é necessário seguir estas diretrizes, mas são a convenção.
Se você tentar obter o Process. ExitCode antes do processo ter saído, a tentativa lança uma exceção. Examine primeiro o recurso Process. HasExited para verificar se o processo associado foi encerrado.
Há duas maneiras de ser notificado quando o processo associado sai: de forma síncrona e assíncrona. A notificação síncrona baseia-se em chamar o método Process. WaitForExit para pausar o processamento do seu aplicativo até o componente associado sair. A notificação assíncrona depende do evento Process. Exited. Em ambos os casos, Process. EnableRaisingEvents deve ser definido como verdadeiro para o componente Processo para receber a notificação de que o processo foi encerrado.
Retornar ao topo.
Resumo Obtém o tempo que o processo associado saiu. Sintaxe C #
Retornar ao topo.
Resumo Retorna o identificador nativo do processo associado. Sintaxe C #
A instância do Processo foi anexada a um processo em execução, mas você não possui as permissões necessárias para obter um controle com direitos de acesso completo.
Apenas processos iniciados através de uma chamada para Process. Start, defina a propriedade Process. Handle das instâncias de Processo correspondentes.
Retornar ao topo.
Resumo Obtém um valor que indica se o processo associado foi encerrado. Sintaxe C #
Um processo pode terminar independentemente do seu código. Se você iniciou o processo usando este componente, o sistema atualiza automaticamente o valor de Process. HasExited, mesmo se o processo associado sair de forma independente.
Retornar ao topo.
Resumo Obtém o identificador exclusivo para o processo associado. Sintaxe C #
Não existe nenhum processo associado a este objeto Processo.
Você pode conectar um processo que está sendo executado em um computador local ou remoto para uma nova instância do Processo passando o identificador de processo para o método System. Diagnostics. Process. GetProcessById (não suportado no CLI de fonte compartilhada). System. Diagnostics. Process. GetProcessById (não suportado na CLI de fonte compartilhada) é um método estático que cria um novo componente e define a propriedade Process. Id para a nova instância do Processo automaticamente.
Os identificadores de processo podem ser reutilizados pelo sistema. O valor da propriedade Process. Id é exclusivo somente enquanto o processo associado está sendo executado. Após o processo ter terminado, o sistema pode reutilizar o valor da propriedade Process. Id para um processo não relacionado.
Como o identificador é exclusivo no sistema, você pode passá-lo para outros tópicos como uma alternativa para passar uma instância do Processo. Esta ação pode salvar os recursos do sistema ainda garantir que o processo esteja corretamente identificado.
Retornar ao topo.
Resumo Obtém ou define o ISite do Componente. Sintaxe C #
O valor da propriedade é nulo se o Componente for removido do seu IContainer. Atribuir nulo a esta propriedade não remove necessariamente o Componente do IContainer.
Um componente pode ou não ter um nome. Se um Componente receber um nome, o nome deve ser exclusivo entre outros objetos de Componente dentro do seu IContainer. O ISite armazena o nome do Componente; portanto, você só pode nomear um Componente se tiver um ISite associado a ele.
Retornar ao topo.
Resumo Obtém um StreamReader através do qual ler a saída de erro do aplicativo. Sintaxe C #
O componente Processo se comunica com um processo filho através de um pipe. Se um processo filho escrever dados suficientes para o tubo para preencher o buffer, a criança irá bloquear até que o pai lê os dados do tubo. Isso pode causar bloqueio se seu aplicativo estiver lendo toda a saída para erro padrão e saída padrão, por exemplo, usando o seguinte código C #.
Nessa instância, ambos os processos pai e filho seriam bloqueados, pois o tubo preenchido impede que o processo filho seja concluído, enquanto o processo pai espera indefinidamente para que o processo filho saia.
Esse problema pode ser resolvido movendo o ReadToEnd () antes do WaitForExit (), da seguinte forma.
Um problema semelhante surge se você redirecionar saída padrão e erro padrão e tente ler ambos, por exemplo, usando o seguinte código C #.
Nesse caso, se o processo filho escrever qualquer texto para erro padrão, ele bloqueará o processo, porque o processo pai não pode ler de erro padrão até que ele tenha terminado a leitura da saída padrão. No entanto, o processo pai não será lido a partir da saída padrão até o processo terminar. Uma solução recomendada para esta situação é criar dois tópicos para que seu aplicativo possa ler a saída de cada fluxo em um segmento separado.
Retornar ao topo.
Resumo Obtém um StreamWriter através do qual o aplicativo pode escrever entrada no processo. Sintaxe C #
Retornar ao topo.
Resumo Obtém um StreamReader através do qual o aplicativo pode ler a saída do processo. Sintaxe C #
O componente Processo se comunica com um processo filho através de um pipe. Se um processo filho escrever dados suficientes para o tubo para preencher o buffer, a criança irá bloquear até que o pai lê os dados do tubo. Isso pode causar bloqueio se seu aplicativo estiver lendo toda a saída para erro padrão e saída padrão, por exemplo, usando o seguinte código C #.
Nessa instância, ambos os processos pai e filho seriam bloqueados, pois o tubo preenchido impede que o processo filho seja concluído, enquanto o processo pai espera indefinidamente para que o processo filho saia.
Esse problema pode ser resolvido movendo o ReadToEnd () antes do WaitForExit (), da seguinte forma.
Um problema semelhante surge se você redirecionar saída padrão e erro padrão e tente ler ambos, por exemplo, usando o seguinte código C #.
Nesse caso, se o processo filho escrever qualquer texto para erro padrão, ele bloqueará o processo, porque o processo pai não pode ler de erro padrão até que ele tenha terminado a leitura da saída padrão. No entanto, o processo pai não será lido a partir da saída padrão até o processo terminar. Uma solução recomendada para esta situação é criar dois tópicos para que seu aplicativo possa ler a saída de cada fluxo em um segmento separado.
Retornar ao topo.
Resumo Obtém ou define as propriedades para passar para o Process. Start método do Processo. Sintaxe C #
O único membro Process. StartInfo necessário para definir é a propriedade ProcessStartInfo. FileName. Iniciando um processo especificando a propriedade ProcessStartInfo. FileName é semelhante a digitar as informações na caixa de diálogo Executar do menu Iniciar do Windows. Portanto, a propriedade ProcessStartInfo. FileName não precisa representar um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo instalado no sistema. Por exemplo, o ProcessStartInfo. FileName pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter um. doc se você tiver arquivos associados. doc com uma ferramenta de processamento de texto, como o Microsoft Word . Da mesma forma, da mesma forma que a caixa de diálogo Executar pode aceitar um nome de arquivo executável com ou sem a extensão. exe, a extensão. exe é opcional no membro ProcessStartInfo. FileName. Por exemplo, você pode definir a propriedade ProcessStartInfo. FileName como "Notepad. exe" ou "Bloco de notas".
Se o nome do arquivo envolve um arquivo não executável, como um arquivo. doc, você pode incluir um verbo especificando quais as ações a serem executadas no arquivo. Por exemplo, você pode configurar System. Diagnostics. ProcessStartInfo. Verb (não suportado na CLI de fonte compartilhada) para "Imprimir" para um arquivo que termina na extensão. doc. O nome do arquivo especificado na propriedade ProcessStartInfo. FileName não precisa ter uma extensão se você inserir manualmente um valor para a propriedade System. Diagnostics. ProcessStartInfo. Verb (não suportado na fonte CLI compartilhada). No entanto, se você usar a propriedade System. Diagnostics. ProcessStartInfo. Verbs (não suportado na fonte CLI compartilhada) para determinar quais verbos estão disponíveis, você deve incluir a extensão do arquivo.
Quando o processo é iniciado, o nome do arquivo é o arquivo que preenche a propriedade (somente de leitura) System. Diagnostics. Process. MainModule (não suportada na fonte CLI compartilhada). Se você deseja recuperar o arquivo executável que está associado ao processo após o processo ter iniciado, use a propriedade System. Diagnostics. Process. MainModule (não suportado na fonte CLI compartilhada). Se você deseja configurar o arquivo executável de uma instância Processo para o qual um processo associado não foi iniciado, use o membro ProcessStartInfo. FileName da propriedade Process. StartInfo. Como os membros da propriedade Process. StartInfo são argumentos que são passados para o Process. Start método de um processo, alterar a propriedade ProcessStartInfo. FileName após o processo associado iniciado não irá redefinir o System. Diagnostics. Process. MainModule (não suportado na propriedade CLI da fonte compartilhada). Essas propriedades são usadas apenas para inicializar o processo associado.
Retornar ao topo.
Resumo Obtém ou define o objeto usado para organizar as chamadas do manipulador de eventos que são emitidas como resultado de um evento de saída do processo. Sintaxe C #
Quando o evento Process. Exited é tratado por um componente visual do Windows Forms, como um botão, o acesso ao componente através do pool de threads do sistema pode não funcionar ou pode resultar em uma exceção. Evite isso configurando Process. SynchronizingObject para um componente do Windows Forms, o que faz com que os métodos que processam o evento Process. Exited sejam chamados no mesmo tópico no qual o componente foi criado.
Se o Processo for usado dentro do Visual Studio em um designer Windows Forms, o Process. SynchronizingObject será configurado automaticamente no controle que contém o Processo. Por exemplo, se você colocar um Processo em um designer para Form1 (que herda do Formulário), a propriedade Process. SynchronizingObject do Processo está configurada para a instância do Form1.
Normalmente, esta propriedade é definida quando o componente é colocado dentro de um controle ou formulário, porque esses componentes estão vinculados a um segmento específico.
Retornar ao topo.
Retornar ao topo.
Resumo Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. Sintaxe C #
O Tipo do objeto que o novo ObjRef irá fazer referência.
Valor de retorno: informações necessárias para gerar um proxy. Exceções.
Retornar ao topo.
Resumo lança todos os recursos usados pelo Componente. Sintaxe C #
Retornar ao topo.
) Resumo Suporta a infraestrutura CLI de Origem Compartilhada e não se destina a ser usada diretamente do seu código. Esse tipo é compatível com a infraestrutura CLI de Origem Compartilhada e não se destina a ser usado diretamente do seu código. Sintaxe C #
Retornar ao topo.
Veja a descrição do membro da classe base: System. Object. Equals C # Sintaxe:
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Veja a descrição do membro da classe base: System. Object. Finalize C # Sintaxe:
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Retornar ao topo.
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Resumo Recupera o objeto de serviço da vida atual que controla a política de vida para esta instância. Sintaxe C #
Retornar ao topo.
Resumo Retorna um objeto que representa um serviço fornecido pelo componente ou pelo seu contêiner. Sintaxe C #
Um serviço fornecido pelo Componente.
Valor de retorno: um objeto que representa um serviço fornecido pelo Componente.
Esse valor é nulo se o Componente não fornecer o serviço especificado.
Comentários Este método pode ser substituído por uma classe derivada. Veja também:
Retornar ao topo.
Veja a descrição do membro da classe base: System. Object. GetType C # Sintaxe:
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Resumo Obtém um objeto de serviço ao longo da vida para controlar a política de vida para esta instância. Sintaxe C #
Retornar ao topo.
Não existe nenhum processo associado a este objeto Processo.
Você está tentando chamar Process. Kill para um processo que está sendo executado em um computador remoto. O método está disponível apenas para processos em execução no computador local.
Os dados editados pelo processo ou recursos alocados ao processo podem ser perdidos se você chamar Process. Kill. Process. Kill provoca um término anormal do processo e deve ser usado somente quando necessário. System. Diagnostics. Process. CloseMainWindow (não suportado na CLI de fonte compartilhada) permite uma terminação ordenada do processo e fecha todas as janelas, por isso é preferível para aplicativos com uma interface. Se System. Diagnostics. Process. CloseMainWindow (não suportado na CLI de origem compartilhada) falhar, você pode usar Process. Kill para encerrar o processo. Process. Kill é a única maneira de encerrar processos que não possuem interfaces gráficas.
Você pode chamar Process. Kill e System. Diagnostics. Process. CloseMainWindow (não suportado na CLI de fonte compartilhada) apenas para processos que estão sendo executados no computador local. Você não pode causar processos em computadores remotos para sair. Você só pode visualizar informações para processos em execução em computadores remotos.
Retornar ao topo.
Para obter mais informações sobre os membros herdados do System. Object, clique no link acima.
Retornar ao topo.
Como uma alternativa ao Process. OnExited, você pode escrever seu próprio manipulador de eventos. Você cria seu próprio delegado de manipuladores de eventos e seu próprio método de tratamento de eventos.
Aumentar um evento invoca o manipulador de eventos através de um delegado. Para obter uma visão geral, veja o tópico conceitual no MSDN: fornecendo a funcionalidade doente.
Retornar ao topo.
Quando um componente de Processo está associado a um recurso de processo, os valores de propriedade do Processo são imediatamente preenchidos de acordo com o status do processo associado. Se a informação sobre o processo associado posteriormente for alterada, essas alterações não serão refletidas nos valores em cache do componente Processo. O componente Processo é um instantâneo do recurso de processo no momento em que eles estão associados. Para visualizar os valores atuais para o processo associado, chame o método Process. Refresh.
Retornar ao topo.
Esta sobrecarga de Process. Start não é um método estático. Você deve chamá-lo para uma instância da classe Process. Antes de chamar Process. Start, você deve primeiro especificar as informações de propriedade do Process. StartInfo para esta instância do Processo, porque essa informação é usada para determinar o recurso do processo para começar.
As outras sobrecargas do método Process. Start são membros estáticos. Não é necessário criar uma instância do componente Processo antes de chamar essas sobrecargas do método. Em vez disso, você pode chamar Process. Start para a própria classe Process e um novo componente Process é criado se o processo for iniciado. Ou, nulo é retornado se um processo foi reutilizado. O recurso de processo é automaticamente associado ao novo componente de Processo que é retornado pelo método Process. Start.
Os membros Process. StartInfo podem ser usados para duplicar a funcionalidade da caixa de diálogo Executar do menu Iniciar do Windows. Qualquer coisa que pode ser digitada em uma linha de comando pode ser iniciada configurando os valores apropriados na propriedade Process. StartInfo. A única propriedade Process. StartInfo que deve ser definida é a propriedade ProcessStartInfo. FileName. A propriedade ProcessStartInfo. FileName não precisa ser um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo que esteja instalado no sistema. Por exemplo, a propriedade ProcessStartInfo. FileName pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter uma extensão. doc se você tiver arquivos. doc associados com uma ferramenta de processamento de texto, como como Microsoft Word.
Na linha de comando, você pode especificar as ações a serem tomadas para determinados tipos de arquivos. Por exemplo, você pode imprimir documentos ou editar arquivos de texto. Especifique essas ações usando o membro System. Diagnostics. ProcessStartInfo. Verb (não suportado no CLI de origem compartilhada) da propriedade Process. StartInfo. Para outros tipos de arquivos, você pode especificar argumentos de linha de comando quando você inicia o arquivo na caixa de diálogo Executar. Por exemplo, você pode passar um URL como um argumento se você especificar seu navegador como ProcessStartInfo. FileName. Esses argumentos podem ser especificados no membro ProcessStartInfo. Arguments da propriedade Process. StartInfo.
Uma nota sobre estados de apartamentos em segmentos gerenciados é necessária aqui. Quando ProcessStartInfo. UseShellExecute é verdadeiro na propriedade Process. StartInfo do componente do processo, verifique se você definiu um modelo de threading em seu aplicativo definindo o atributo [STAThread] no método main (). Caso contrário, um thread gerenciado pode estar em um estado desconhecido ou colocar no estado MTA, o último dos quais está em conflito com ProcessStartInfo. UseShellExecute sendo verdadeiro. Alguns métodos exigem que o estado do apartamento não seja desconhecido. Se o estado não for definido explicitamente, quando o aplicativo encontrar esse método, ele é padrão para MTA e, uma vez definido, o estado do apartamento não pode ser alterado. No entanto, o MTA faz com que uma exceção seja lançada quando o shell do sistema operacional estiver gerenciando o segmento.
Exemplo O exemplo a seguir demonstra como iniciar um dos quatro processos (Word, Excel, Internet Explorer ou Bloco de Notas), dependendo da informação passada para o procedimento que descreve um documento. O exemplo atribui informações a um objeto de processo existente e inicia o procedimento.
StartProcess leva dois parâmetros. O primeiro parâmetro é o nome de um documento, ou seja, qualquer arquivo que tenha uma ação aberta associada (por exemplo, MyDoc. doc ou MyFile. txt). O segundo parâmetro é a extensão do documento (.doc,.txt,.htm. Ou. xls). Usando a extensão, o procedimento StartProcess associa um aplicativo com a propriedade Process. StartInfo do componente Processo. Então, o documento em si é passado como um argumento com o qual o aplicativo é aberto. No caso do Excel ou do Word, o documento é aberto para ser impresso. No caso do Notepad ou do Internet Explorer, o documento só é carregado na janela do aplicativo.
O nome do arquivo e os argumentos são os mesmos que você digitaria na caixa de diálogo Executar do menu Iniciar do Windows.
Retornar ao topo.
) Resumo Inicia o recurso de processo que é especificado pelo parâmetro que contém as informações de início do processo (por exemplo, o nome do processo para iniciar) e associa o recurso com um novo componente de Processo. Sintaxe C #
O ProcessStartInfo que contém as informações que são usadas para iniciar o processo, incluindo o nome do arquivo e os argumentos da linha de comando.
Valor de retorno: um novo componente do Processo que está associado ao recurso de processo ou nulo se nenhum recurso de processo for iniciado (por exemplo, se um processo existente for reutilizado). Exceções.
Essa sobrecarga permite que você inicie um processo sem primeiro criar uma nova instância de Processo. Usar esta sobrecarga com um parâmetro ProcessStartInfo é uma alternativa às etapas explícitas da criação de uma nova instância de Processo, definindo suas propriedades Process. StartInfo e Processando chamada. Etapa para a instância do Processo.
Usando uma instância ProcessStartInfo como o parâmetro permite chamar Process. Start com o maior controle sobre o que é passado na chamada para iniciar o processo. Se você precisa passar apenas um nome de arquivo ou um nome de arquivo e argumentos, não é necessário criar uma nova instância do ProcessStartInfo, embora essa seja uma opção. A única propriedade Process. StartInfo que deve ser definida é a propriedade ProcessStartInfo. FileName. A propriedade ProcessStartInfo. FileName não precisa representar um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo que esteja instalado no sistema. Por exemplo, a propriedade ProcessStartInfo. FileName pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter uma extensão. doc se você tiver arquivos. doc associados com uma ferramenta de processamento de texto, como como Microsoft Word.
Ao contrário das outras sobrecargas, a sobrecarga de Process. Start que não tem parâmetros não é um membro estático. Use essa sobrecarga quando você já criou uma instância de Processo, informações de início especificadas (incluindo o nome do arquivo) e deseja iniciar um recurso de processo e associá-lo à instância do Processo existente. Use uma das sobrecargas estáticas quando quiser criar um novo componente Processo em vez de iniciar um processo para um componente existente. Tanto esta sobrecarga quanto a sobrecarga que não tem parâmetros permitem que você especifique as informações de início do recurso de processo usando uma instância ProcessStartInfo.
Uma nota sobre estados de apartamentos em segmentos gerenciados é necessária aqui. Quando ProcessStartInfo. UseShellExecute é verdadeiro no parâmetro startInfo, verifique se você definiu um modelo de encadeamento na sua aplicação definindo o atributo [STAThread] no método main (). Caso contrário, um thread gerenciado pode estar em um estado desconhecido ou colocar no estado MTA, o último dos quais está em conflito com ProcessStartInfo. UseShellExecute sendo verdadeiro. Alguns métodos exigem que o estado do apartamento não seja desconhecido. Se o estado não for definido explicitamente, quando o aplicativo encontrar esse método, ele é padrão para MTA e, uma vez definido, o estado do apartamento não pode ser alterado. No entanto, o MTA faz com que uma exceção seja lançada quando o shell do sistema operacional estiver gerenciando o segmento.
Retornar ao topo.
) Resumo Inicia um recurso de processo especificando o nome de um documento ou arquivo de aplicativo e associa o recurso com um novo componente de Processo. Sintaxe C #
O nome de um documento ou arquivo de aplicativo para executar no processo.
Valor de retorno: um novo componente de processo que está associado ao recurso de processo ou nulo, se nenhum recurso de processo for iniciado (por exemplo, se um processo existente for reutilizado). Exceções.
Essa sobrecarga permite que você inicie um processo sem primeiro criar uma nova instância de Processo. A sobrecarga é uma alternativa às etapas explícitas da criação de uma nova instância de Processo, definindo o membro ProcessStartInfo. FileName da propriedade Process. StartInfo e processo de chamada. Inicialize para a instância do Processo.
Iniciando um processo especificando seu nome de arquivo é semelhante a digitar as informações na caixa de diálogo Executar do menu Iniciar do Windows. Portanto, o nome do arquivo não precisa representar um arquivo executável. Pode ser de qualquer tipo de arquivo para o qual a extensão tenha sido associada a um aplicativo instalado no sistema. Por exemplo, o nome do arquivo pode ter uma extensão. txt se você tiver arquivos de texto associados com um editor, como o Bloco de Notas, ou pode ter um. doc se você tiver arquivos associados. doc com uma ferramenta de processamento de texto, como o Microsoft Word. Da mesma forma, da mesma maneira que a caixa de diálogo Executar pode aceitar um nome de arquivo executável com ou sem a extensão. exe, a extensão. exe é opcional no parâmetro fileName. Por exemplo, você pode definir o parâmetro fileName como "Notepad. exe" ou "Bloco de notas".
Ao contrário das outras sobrecargas, a sobrecarga de Process. Start que não tem parâmetros não é um membro estático. Use essa sobrecarga quando você já criou uma instância de Processo, informações de início especificadas (incluindo o nome do arquivo) e deseja iniciar um recurso de processo e associá-lo à instância do Processo existente. Use uma das sobrecargas estáticas quando quiser criar um novo componente Processo em vez de iniciar um processo para um componente existente. Tanto esta sobrecarga como a sobrecarga que não possui parâmetros permitem que você especifique o nome do arquivo do recurso de processo para começar.
Uma nota sobre estados de apartamentos em segmentos gerenciados é necessária aqui. Quando ProcessStartInfo. UseShellExecute é verdadeiro na propriedade Process. StartInfo do componente do processo, verifique se você definiu um modelo de threading em seu aplicativo definindo o atributo [STAThread] no método main (). Caso contrário, um thread gerenciado pode estar em um estado desconhecido ou colocar no estado MTA, o último dos quais está em conflito com ProcessStartInfo. UseShellExecute sendo verdadeiro. Alguns métodos exigem que o estado do apartamento não seja desconhecido. Se o estado não for definido explicitamente, quando o aplicativo encontrar esse método, ele é padrão para MTA e, uma vez definido, o estado do apartamento não pode ser alterado. No entanto, o MTA faz com que uma exceção seja lançada quando o shell do sistema operacional estiver gerenciando o segmento.
Exemplo O exemplo a seguir demonstra como abrir o bloco de notas passando o nome do aplicativo para o método Process. Start. Como o Notepad pode receber uma solicitação de fechamento antes que a janela seja aberta e inicializada, o exemplo faz com que o aplicativo aguarde até que o Bloco de notas esteja no loop de mensagem e no estado ocioso antes de receber a entrada. The example results in the opening of a blank Notepad window. Veja também:
Return to top.
) Summary Starts a process resource by specifying the name of an application and a set of command line arguments, and associates the resource with a new Process component. C# Syntax:
The name of an application file to run in the process.
Command line arguments to pass when starting the process.
Return Value: A new Process component that is associated with the process, or null , if no process resource is started (for example, if an existing process is reused). Exceções.
This overload lets you start a process without first creating a new Process instance. The overload is an alternative to the explicit steps of creating a new Process instance, setting the ProcessStartInfo. FileName and ProcessStartInfo. Arguments members of the Process. StartInfo property, and calling Process. Start for the Process instance.
Starting a process by specifying its file name and arguments is similar to typing the file name and command line arguments in the Run dialog box of the Windows Start menu. Therefore, the file name does not need to represent an executable file. It can be of any file type for which the extension has been associated with an application installed on the system. For example the file name can have a. txt extenstion if you have associated text files with an editor, such as Notepad, or it can have a. doc if you have associated. doc files with a word processing tool, such as Microsoft Word. Similarly, in the same way that the Run dialog box can accept an executable file name with or without the. exe extension, the. exe extension is optional in the fileName parameter. For example, you can set the fileName parameter to either "Notepad. exe" or "Notepad". If the fileName parameter represents an executable file, the arguments parameter may represent a file to act upon, such as the text file in Notepad. exe myfile. txt .
Unlike the other overloads, the overload of Process. Start that has no parameters is not a static member. Use that overload when you have already created a Process instance, specified start information (including the file name), and want to start a process resource and associate it with the existing Process instance. Use one of the static overloads when you want to create a new Process component rather than start a process for an existing component. Both this overload and the overload that has no parameters allow you to specify the file name of the process resource to start and command line arguments to pass.
A note about apartment states in managed threads is necessary here. When ProcessStartInfo. UseShellExecute is true on the process component's Process. StartInfo property, make sure you have set a threading model on your application by setting the attribute [STAThread] on the main() method. Otherwise, a managed thread can be in an unknown state or put in the MTA state, the latter of which conflicts with ProcessStartInfo. UseShellExecute being true . Some methods require that the apartment state not be unknown . If the state is not explicitly set, when the application encounters such a method, it defaults to MTA , and once set, the apartment state cannot be changed. However, MTA causes an exception to be thrown when the operating system shell is managing the thread.
Example The following example demonstrates how to start Internet Explorer as a process from within your application. The example passes the URL microsoft as an argument to the Process. Start method. The file name and arguments pair is the same as you would type directly into the Run dialog box (which is accessed from the Windows Start menu). The example results in the opening of the browser window. Veja também:
Return to top.
See base class member description: System. Object. ToString C# Syntax:
For more information on members inherited from System. Object click on the link above.
Return to top.
Não existe nenhum processo associado a este objeto Processo.
You are attempting to call Process. WaitForExit for a process running on a remote computer. The method is available only for processes that are running on the local computer.
This overload of Process. WaitForExit instructs the Process component to wait an infinite amount of time for the process to exit. Isso pode fazer com que um aplicativo pare de responder. For example, if you call System. Diagnostics. Process. CloseMainWindow (not supported on the shared source CLI) for a process that has a user interface, the request to the operating system to terminate the associated process might not be handled if the process is written to never enter its message loop.
When an associated process exits (is shut down by the operation system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called Process. WaitForExit. O componente Processo pode, então, acessar a informação, que inclui o Process. ExitTime, usando Process. Handle para o processo encerrado.
Como o processo associado saiu, a propriedade Process. Handle do componente não mais aponta 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 das alças para os processos que não foram lançados pelos componentes do Processo, portanto, ele mantém as informações Process. ExitTime e Process. Handle na memória até que o componente Processo liberte especificamente os recursos. Por esse motivo, sempre que você chamar Process. Start para uma instância Process, ligue Process. Fechar quando o processo associado foi encerrado e você não precisa mais de informações administrativas sobre isso. Process. Close libera a memória alocada para o processo encerrado.
Return to top.
) Summary Instructs the Process component to wait the specified number of milliseconds for the associated process to exit. C# Syntax:
A quantidade de tempo, em milissegundos, para aguardar o encerramento do processo associado. O máximo é o maior valor possível de um inteiro de 32 bits, que representa infinito para o sistema operacional.
Return Value: true if the associated process has exited; caso contrário, falso. Exceções.
Não existe nenhum processo associado a este objeto Processo.
No comments:
Post a Comment