Saturday 4 November 2017

Msdn Processo Waitforexit


NET System. Diagnostics. Process Classe 8211 parte 1 e Process. WaitForExit evento. Exited aren8217t lavoro pensavo di aver scoperto che questo è il caso, ma è stata colpa mia, probabilmente lo stesso anche per te. Voglio andare oltre ciò che ho trovato durante l'esplorazione e la risoluzione di questo problema. Risposta breve: metodi Se si reindirizza StandardOutput Andor StandardError, miglior uso della Process. BeginErrorReadLine asincrono () e. BeginOutputReadLine () prima di chiamare. WaitForExit () e catturare l'uscita agganciando il Process. ErrorDataReceived ed eventi. OutputDataReceived. La risposta lunga inizia con me utilizzando il Studio diffmerge. exe visiva nella cartella Common7IDE per confrontare i file di testo in modalità batch. Sto introducendo un test di regressione in un processo batch di compilazione iniziati. Avevo bisogno di uno strumento che sputare fuori un file di testo differenza quando si confrontano due file (non è un file risultato della fusione). WinMerge e senza paragoni sono a mia disposizione, ma essi non sembrano producono nulla, ma fuse risultati (che normalmente è quello che voglio, ma non questa volta). Il mio quadro di regressione chiamerà diffmerge. exe e memorizzare il file diff risultante per la revisione successiva. Ho codificato il mio ProcessStartInfo seguito con dando il via al processo e in attesa del processo per terminare. e in attesa di attesa di attesa. Questo mi ha fatto leggere MSDN e scavare più in profondità l'uso della classe Process. Ho scoperto alcune informazioni interessanti, probabilmente avrebbe dovuto essere ovvio. In primo luogo, ho scoperto che a volte si esegue il mio processo Bambino DiffMerge con argomenti diversi ha lavorato, a volte non ha ancora, rendendo il problema misterioso. In secondo luogo, ho scoperto che ha funzionato bene quando ho didn8217t reindirizzare l'output. Così, ovviamente mi mancava qualcosa. Avevo bisogno di leggere effettivamente la documentazione API di processo, e quindi ho trovato questo pepita: articolo MSDN Dopo l'individuazione e la lettura che MSDN articolo che ho capito. Il mio esempio di codice sopra funziona se il StdOut o stderror tampone doesnt si riempiono. Tuttavia quello che stavo vedendo era il buffer StdOut riempiendo, il processo figlio è stato bloccato sulla prossima StdOutStdError scrittura, il processo padre era in attesa all'infinito sul processo di bambino per uscire prima di leggere dal buffer StdOutStdError. A me sembrava che evento metodo WaitForExit Andor Exited sono rotti non cattura il processo figlio in uscita, ma è stato il mio codice che è stato rotto. Ho modificato il codice per utilizzare i metodi asincroni e improvvisamente i miei problemi andato via. Non più il blocco, tutto ha funzionato come previsto. Ho usato StringBuilders come buffer per contenere i dati ricevuti negli eventi. Nella parte 2, mi imbatto in un problema con le implementazioni del processo StdOutStdError ReadLine intorno alle mie esigenze specifiche, vado in quanto ho deciso che issue. Im avere un problema con questo e spero che alcuni di voi può far luce su di esso per me il blocco di codice: Ive ha cambiato l'URL, ovviamente, ma questo non è importante. Quando provo a farlo funzionare, mi dà una eccezione sulla linea quotWaitForExitquot indicando processo quotNo è associato a questo object. quot Qualsiasi aiuto qui sarebbe molto apprezzato Martedì, 19 ottobre 2010 18:05 Processo nome del file deve essere eseguibile mBoardProcess. StartInfo. Argomenti microsoftenusdefault. aspx SITO CONVERTITORE mBoardProcess. StartInfo. FileName quotIEXPLORE. EXEquot CODICE A cura di kaymaf Martedì 19 Ottobre 2010 18:32 Contrassegnato come risposta da Frank L. Smith Martedì 19 Ottobre 2010 06:35 Martedì 19 ottobre 2010 06:26

No comments:

Post a Comment