Здравствуйте, возникла такая проблема: установлен интерпретатор руби и если скормить ему (через cmd) файл содержащий ерунду то естественно будет сгенерировано сообщение об ошибке. Однако если попытаться скормить этот файл через приложение windows forms, то информация об ошибке не выводится (не выводится вообще ничего). Что я делаю не так? Вот код
namespace RubyIDE
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void runToolStripMenuItem_Click(object sender, EventArgs e)
{
System.IO.File.WriteAllText("H:\\2.rb", textBox1.Text);
var psi = new ProcessStartInfo
{
FileName = "ruby.exe",
Arguments = "H:\\2.rb",
RedirectStandardOutput = true,
UseShellExecute = false
};
var p = Process.Start(psi);
textBox2.Text = p.StandardOutput.ReadToEnd();
}
...
}
}
Сделаю пояснение, руби код, который подается интерпретатору, вбивается в textBox1 и копируется в файл H:\2.rb, затем вызывается интерпретатор (ruby.exe) и в textBox2 выводится сообщение об ошибках (если они есть). Проблема в том, что textBox2 остается пустым, даже когда ошибки есть и информация о них выводится в консоль. В общем, нужно сделать так, чтобы информация об ошибках в скрипте 2.rb выводилась в textBox2. Буду очень признателен за помощь.
Ответ
Попробуйте прочитать не из StandardOutput, а из StandardError. Вполне возможно, что сообщение об ошибке пишется именно в этот стрим.
P.S. И после того, как прочитали аутпут, лучше дождаться окончания работы процесса: p.WaitForExit()
Комментариев нет:
Отправить комментарий