2010-01-26 2 views
1

Des idées sur la façon de supprimer ou de réinitialiser le contenu d'un Process.StandardOutput, afin que nous puissions rejeter le message du jour et tout autre contenu initial d'un processus?Comment annuler (réinitialiser) process.standardoutput dans .NET?

+0

Je devrais probablement ajouter que c'est un System.IO.FileStream, donc je n'ai pas accès à la recherche ou au redimensionnement du flux etc ... – mwjackson

Répondre

2

Vous pourriez essayer quelque chose de similaire à:

Process.StandardOutput.BaseStream.SetLength (0);

process.StandardOutput.ReadToEnd(); 

De cette façon, vous allez lire tout le contenu déjà écrit et pas en tenir compte. Étant donné que ce flux ne prend pas en charge les opérations de recherche, l'utilisateur recevra un flux "sans en-tête".

+0

System.NotSupportedException: Stream ne supporte pas la recherche. – mwjackson

+0

En cas de CMD, il se bloque (parce que CMD attend toujours l'entrée). Y a-t-il un workaraound pour CMD? – Jet

0

Je ne sais pas ce que vous entendez par défausse mais vous pouvez redirect the standard output:

Lorsqu'un processus écrit le texte dans son flux norme, ce texte est généralement affiché sur la console. Par redirection du flux StandardOutput, vous pouvez manipuler ou supprimer la sortie d'un processus.

+0

Je le redirige déjà vers un lecteur. Ce que je dois faire est en fait jeter le contenu du flux sous-jacent avant que le lecteur ne l'utilise – mwjackson

1

Est-ce que Process.StandardOutput.DiscardBufferedData() ne fait pas ce que vous voulez?

Vous pouvez également lire jusqu'à ce qu'il soit vide? Pas très efficace je suppose, mais si c'est juste du titre, alors ce sera une lecture.