3 votes

Transmettre un flux à Debug.Write()

J'exécute un utilitaire de ligne de commande en utilisant Process.Start . À des fins de débogage, j'aimerais que son flux de sortie soit dirigé vers le panneau de sortie de débogage de Visual Studio ( Debug.Write ). J'aimerais faire cela en temps réel plutôt que d'attendre que le processus se termine et de tout écrire en une seule fois.

Je sais que c'est possible en théorie, mais je n'ai pas assez d'expérience avec le système de gestion de l'information. Stream pour savoir comment procéder.

5voto

Gray Points 3117

Ce n'est peut-être pas exactement ce que vous voulez, mais cela vous met sur la bonne voie, je pense.

p.StartInfo.UseShellExecute = false; 
p.StartInfo.RedirectStandardOutput = true;
p.OutputDataReceived += p_OutputDataReceived;
p.Start();
p.BeginOutputReadLine();

Ensuite, votre gestionnaire d'événement pour recevoir les données.

void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
    Debug.Write(e.Data);
}

2voto

Tyrrrz Points 438

CliWrap rend le travail avec les processus trivial. Voici à quoi ressemblerait votre scénario particulier :

// Pipe the output directly to Debug.WriteLine
var cmd = Cli.Wrap("app.exe") | Debug.WriteLine;

await cmd.ExecuteAsync();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X