Process output c#

Ti_Math Messages postés 13 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 12 septembre 2004 - 14 juil. 2004 à 01:10
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 15 juil. 2004 à 21:32
bonjour a tous
jai fouiller sur le forum pour trouver un moyen de recevoir en temps réel les message d'une fenetre ms-dos

j'ai commencer par la méthode la plus simple : process.StandardOutput.readline()...
et jaffiche le résultat dans un textbox
mais il y a un probleme
le readline "bloque" et on dirais que laffichage dans le textbox
gèle mais il repart l,affichage bcp plus tard.
Donc si il y a un moyen d'éviter ce lag la vous seriez bien gentil de me le dire.
jai lu dans le forum qu'on pouvais le faire avec la classe System.messenging.message mais je sais po comment il utilise cela

merci a tous

Ti-Math

5 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
14 juil. 2004 à 09:57
StandardOutput est un StreamReader, et ses methodes sont bloquantes, donc si tu lances une operation de lecture dans le thread de ton appli, celle-ci est bloquée tant qu'il n'y a rien a lire

Cocoricoooooooo !!!!
0
Ti_Math Messages postés 13 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 12 septembre 2004
15 juil. 2004 à 00:25
Ou je c que c'est une méthode bloquante mais ce qui arrive c que la fenetre ms-dos normal s'affiche tres bien mais que le output du process s'arrete pendant lontemp avant de recontinuer.
a moins qui y est un genre de sleep dans readline. parce que cela se ne peut pas que ma fenetre ms-dos naffiche aucun message pendant si longtemps.

(Si tu sais le pk que sa bloque ou meme une hypotèse sa m'aiderais)

merci

Ti-Math
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 juil. 2004 à 18:35
montre un peu ton code de lecture stp

Cocoricoooooooo !!!!
0
Ti_Math Messages postés 13 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 12 septembre 2004
15 juil. 2004 à 21:11
ce code est appeler par un thread indépendant pour pas que l'interface gèle. et txt c un textbox.
private void Output()
{
while(!Dos.HasExited)
{
while (Dos.StandardOutput.Peek() > -1)
{
string Message = Dos.StandardOutput.ReadLine() + "\r\n";
if(Txt != null)
{
try
{
Txt.Text += Message;
if(Txt.Lines.Length > 100)
{
int Index = Txt.Text.IndexOf("/r/n");
Txt.Text = Txt.Text.Remove(0,Index + 2);
}
}
finally
{}
}
}
}

}

Ti-Math
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 juil. 2004 à 21:32
string Message;
while(!Dos.HasExited)
{
Message = Dos.StandardOutput.ReadLine() + "\r\n";
if(Txt != null)
{
Txt.Text += Message;
if(Txt.Lines.Length > 100)
{
int Index = Txt.Text.IndexOf("\r\n");
Txt.Text = Txt.Text.Remove(0,Index + 2);
}
}
}


Cocoricoooooooo !!!!
0
Rejoignez-nous