пятница, 11 мая 2018 г.

Waitforexit não funciona c #


Waitforexit não funciona c #
Então eu tenho lutado contra esse problema por algum tempo e tentei muitas maneiras diferentes de consertá-lo, mas não consegui.
Bascally que meu aplicativo faz é chama um arquivo java para carregar um aplicativo em um dispositivo. Enquanto ele está carregando é imprimi-lo para uma caixa richtext, então eu gostaria de passar para o próximo arquivo. O problema que estou tendo é que enquanto o primeiro arquivo está sendo carregado, o segundo tenta carregar quais problemas de casos. Eu tentei a espera pela saída, mas se eu fizer isso, os dados de saída não serão gravados na caixa rich text. Alguma ideia?
Eu tentei colocar a espera pela saída em muitos lugares diferentes, mas parece que não funciona.
Dois métodos abaixo escrevem o stdout ou erro para o campo richtext.
Qualquer ideia seria ótima. Bascally eu preciso do processo para sair, então eu posso continuar pensando o forloop para carregar o próximo arquivo.
Se você WaitForExit, seu aplicativo bloqueia (aguarda) até que o processo saia. Isso significa que não é possível processar nenhuma mensagem do Windows em seu thread da interface do usuário, portanto, ela não atualiza a interface do usuário.
Você precisa iniciar o processo "em segundo plano" para que sua interface do usuário continue sendo atualizada. Isso pode ser feito com:
Inicie e monitore o processo a partir de um thread separado e passe as informações de progresso de volta ao thread de interface do usuário para exibir Incluir um manipulador de eventos no evento de saída do processo ou periodicamente pesquisar o flag de process. HasExited e use isso para saber quando o primeiro processo acabado. Seu manipulador de eventos iniciaria esse processo e retornaria ao loop principal do aplicativo para que ele fosse executado normalmente enquanto aguardava a conclusão do processo externo.
Sente-se em um loop de espera ocupada até que seja concluído e processe os eventos do aplicativo. (Cuidado com isso, como qualquer evento que cause chamadas reentrantes para este código pode fazer coisas muito ruins. Geralmente, se você usar essa abordagem, você precisará certificar-se de que o restante de seu aplicativo está "bloqueado" em um estado em que ele saiba está ocupado esperando que um processo seja concluído). Isso é efetivamente o que o WaitForExit faz, mas também processa eventos de aplicativos, permitindo que a interface do usuário permaneça vagamente responsiva:

Waitforexit não funciona c #
Eu estou começando um aplicativo com parâmetros e quero fechar meu aplicativo c # após o "Startup. exe" fechado. Depois startup. exe fechou o aplicativo C # ainda em execução, então a minha pergunta é por que WaitForExit () não está funcionando para mim? E como resolver esse problema?
fechado como off-topic por Hans Passant, TZHX, John Dvorak, Aurora0001, Mathias R. Jessen Dez 11 '16 em 20:10.
Esta questão parece estar fora do tópico. Os usuários que votaram pelo fechamento deram estas razões específicas: "Perguntas que procuram ajuda de depuração (& quot; por que não está funcionando?") Devem incluir o comportamento desejado, um problema ou erro específico e o código mais curto necessário reproduzi-lo na própria questão. Perguntas sem uma declaração clara do problema não são úteis para outros leitores. Veja: Como criar um exemplo Mínimo, Completo e Verificável. & ndash; TZHX, Aurora0001, Mathias R. Jessen "Esta questão foi causada por um problema que não pode mais ser reproduzido ou por um simples erro tipográfico. Embora questões semelhantes possam estar no tópico aqui, esta foi resolvida de uma forma improvável para ajudar futuros leitores. Isso muitas vezes pode ser evitado identificando e inspecionando de perto o programa mais curto necessário para reproduzir o problema antes de postar. & ndash; Hans Passant, John Dvorak Se essa questão puder ser reformulada para se ajustar às regras da Central de Ajuda, edite a pergunta.

Waitforexit não funciona c #
Eu estou adicionando ação personalizada no meu projeto de instalação VS2008 (instalador MSI).
Eu estou chamando um arquivo de lote para criar banco de dados e deseja excluir esses arquivos depois. Eu tenho WaitForExit (), mas não vai esperar. Por quê?
nenhuma diferença com startInfo. UseShellExecute = true; O lote foi executado sem nenhum problema porque requer entrada do usuário e eu insiro y e n para perguntas. mas essa ação de exclusão aconteceu antes da minha entrada. E eu tenho uma pausa no final do arquivo de lote. Eu posso assistir o processo do arquivo em lote.
EDIT: eu testei mais de 10 vezes, não funcionou. Depois do almoço, coloquei mais um waitForExit e um loop while com a verificação HasExited. ele vai dormir dentro do loop while. Eu achei que funcionou. Então eu apaguei o código extra, de volta para um WaitForExit. Parece trabalho agora.

Thread. WaitForExit () não está funcionando?
Thread. WaitForExit () não está funcionando?
Thread. WaitForExit () não está funcionando?
ProcessStartInfo myP = new ProcessStartInfo ();
Mas quando eu mudo o "notepad. exe" com software de terceiros que processam arquivos e assim por diante, "alles guttes" diretamente.
aparecem e parece myp. WaitForExit não está funcionando.
RE: Thread. WaitForExit () não está funcionando?
Não tenho certeza do que você deseja implementar, mas acho que você deve usar o evento Exited para capturar a finalização do processo:
//myp. StartInfo. UseShellExecute = false; // verifique se isso é necessário.
myp. Exited + = new EventHandler (captureExit);
System. Diagnostics. Process ps = (System. Diagnostics. Process) remetente;
(veja os métodos WaitOne (), WaitAny (), Wait ()).
Red Flag enviado.
Obrigado por ajudar a manter o Tek-Tips Forums livre de postagens inapropriadas.
A equipe do Tek-Tips irá verificar isso e tomar as medidas apropriadas.

Waitforexit não funciona c #
Eu estou escrevendo um programa que inicia um número desconhecido de processos em seqüência usando myProcess. Start () e myProcess. WaitForExit ().
O problema parece ser que alguns processos podem iniciar outros processos e, em seguida, sair, fazendo com que meu programa continue sem que o processo iniciado realmente conclua sua tarefa. Existe alguma maneira de monitorar esses "subprocessos"?
Desde já, obrigado.
Edit: Depois de alguns testes adicionais, descobri que o mesmo problema ocorre quando, por exemplo, iniciando o Winword. exe. WaitForExit simplesmente não funciona com alguns aplicativos.
Tom escreveu sobre o mesmo problema neste tópico.
mas ele ficou satisfeito quando funcionou em um computador diferente.
Parece que um processo & quot; WINWORD. EXE & quot; já está em execução na minha máquina. Possivelmente porque eu uso o Word como editor de e-mail (?). Fechando isso antes de executar meu programa (que está configurado para iniciar a palavra e esperar que ele saia) & quot; resolve & quot; o problema. No entanto, não posso supor que o winword não esteja em execução quando meu programa for iniciado.
Não, não há muito que você possa fazer de forma confiável. O problema é que, quando você chama WaitForExit, o aplicativo pode já ter iniciado outro aplicativo e ter saído; não há como saber se esse aplicativo gerou outros nesse ponto.
É a natureza do Process. Start. Você não está descobrindo que WaitForExit aguarda indefinidamente porque o processo chegou e se foi antes de você ligar, você está?
Bem, cria um novo processo, é tão rápido que pode não aparecer no Process Explorer. Tudo o que o Process. Start faz é solicitar que o processo seja iniciado; Não há nada mais que o novo processo seja necessário. Se não quiser ficar na memória, é sua escolha. Não há nada que você possa fazer sobre isso, infelizmente.
Algumas aplicações sempre iniciam um novo processo. Quando você abre um arquivo SLN do Visual Studio, por exemplo, ele sempre inicia dois processos. Há um pequeno aplicativo que verifica o tipo do arquivo SLN e, em seguida, abre uma versão apropriada do Visual Studio porque você só pode associar um aplicativo por extensão.

Комментариев нет:

Отправить комментарий