SORU
12 Kasım 2008, ÇARŞAMBA


Nasıl bir işlem spawn ve onun STDOUT yakalamak için .NET?

Bir konsol uygulaması bir alt işlem spawn ve onun çıkış yakalamak istiyorum.

Bir yöntem için aşağıdaki kodu yazdım:

string retMessage = String.Empty;
ProcessStartInfo startInfo = new ProcessStartInfo();
Process p = new Process();

startInfo.CreateNoWindow = true;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardInput = true;

startInfo.UseShellExecute = false;
startInfo.Arguments = command;
startInfo.FileName = exec;

p.StartInfo = startInfo;
p.Start();

p.OutputDataReceived  = new DataReceivedEventHandler
(
    delegate(object sender, DataReceivedEventArgs e)
    {
        using (StreamReader output = p.StandardOutput)
        {
            retMessage = output.ReadToEnd();
        }
    }
);

p.WaitForExit();

return retMessage;

Ancak, bu her şeyi döndürmüyor. OutputDataReceived olay geri çağrıldığını inanmıyorum, veya WaitForExit() komutu asla geri böylece iplik engelliyor olabilir.

Herhangi bir tavsiye?

DÜZENLEME:Ben görünüşe göre çok zor geri ile çalışıyordu. Yapıyor:

return p.StandardOutput.ReadToEnd(); 

İyi iş gibi görünüyor.

CEVAP
12 Kasım 2008, ÇARŞAMBA


Burada çalışmak için araştırdım. bu kod. MSBuild yumurtlama ve çıkışını dinlemek için kullanıyorum:

process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived  = (sender, args) => Console.WriteLine("received output: {0}", args.Data);
process.Start();
process.BeginOutputReadLine();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Huot Media

    Huot Media

    7 Mayıs 2010
  • PamtheBlamofficial

    PamtheBlamof

    31 Aralık 2010