Saída Padrão Readtoend Waitforexit Vb


Estou escrevendo um aplicativo de linha de comando no VB. Esta aplicação está chamando outra, msxsl. exe, para executar uma transformação XSL. Eu estou usando a classe Process para fazer isso: Esta parte funciona muito bem. O que eu quero que ele possa exibir a saída desse processo para o console da minha aplicação. Eu li várias postagens explicando esse método, mas isso não parece funcionar neste caso. A saída é uma string vazia. Eu verifiquei que, se eu executar o executável do msxsl por conta própria (ou seja, executando msxsl. exe base. xml test. xsl - o styled. xml), ele exibe a saída na linha de comando. O que estou fazendo errado EDITAR: devo notar que o processo do msxsl está atualmente falhando devido a um arquivo XML mal formado. Está exibindo esta mensagem de erro: Ocorreu um erro ao executar a folha de estilo test. xsl. Código: 0x800c0006 O sistema não pode localizar o objeto especificado. Este é exatamente o tipo de coisa que eu quero exibir no console do meu aplicativo (ou, eventualmente, um arquivo de log.) Thread: exibir saída padrão de fluido do processo de console no WinForm Exibição padrão de fluido de exibição do processo de console no WinForm Oi. Eu tenho pesquisado pela web e aqui por vários dias e não encontrei uma solução para o meu problema. Eu sou um desenvolvedor ASP veterano, mas eu sou novo em WinForms e multithreading. Estou usando VS 2010 e VB 4.0. Eu tenho um aplicativo de console que leva minutos para horas para serem executados. Ele escreve para a saída padrão o que está fazendo. O meu cliente agora quer uma GUI para este aplicativo (parâmetros de linha de comando e XML assustá-los) e a solução mais rápida é escrever um WinForm que lança o aplicativo de console. Eu escrevi com sucesso esta aplicação. É o código principal que eu tenho neste ponto: Isso abrirá outro WinForm que fiz, basicamente um grande Textbox com uma propriedade pública Output que eu posso atribuir o StandardOutput. ReadToEnd () para. O WinForm congelará os minutos que meu programa (BCMaker. exe) está sendo executado e depois volte, com a saída na janela de Saída. Bem. Conheci os requisitos do meu projeto. Exceto que este congelamento provavelmente agravará meu cliente, especialmente quando eles não podem ver nenhum progresso. Agora, eu aprendi que WaitForExit () é uma operação síncrona, então, se eu quiser usar um BackgroundWorker e usar esse trecho, isso é uma má idéia. Eu experimentei com o BackgroundWorker, mas os resultados não foram muito melhores. A forma principal e a janela de saída são sensíveis, mas a janela de saída mostra nenhuma saída até o processo ser concluído, onde mostra tudo. É o que eu tenho com BackgroundProcess: o evento BackgroundWorker. ProgressChanged não é bom, já que não há nada discernível, meu aplicativo de console está relatando estou redirecionando o fluxo StandardOutput. Talvez, se o ProgressChangedEventArgs pudesse conter uma carga útil de dados, eu poderia enviar a saída padrão do console periodicamente (como cada 100ms), mas não vejo uma maneira de enviar qualquer carga de dados dessa maneira. Qualquer ideia sobre como exibir um Fluido StandardOutput

Comments

Popular Posts