Я полагаю, что вы не можете перенаправить стандартный вывод после запуска процесса (что относится к текущему процессу).
Посмотрите на метод Console.SetOut :
Устанавливает свойство Out для указанного объекта TextWriter.
Пример:
FileStream fs = new FileStream("Test.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
Console.SetOut(sw);
Console.WriteLine("Hello World");
Это перенаправляет вывод «Hello World» в текстовый файл.
Вам нужно будет реализовать свой собственный TextWriter, который записывает весь текст в gtk # textview.
Кроме того, поскольку это ваша программа, вы можете заменить все вызовы Console.Write / WriteLine на собственный метод, который записывает строку в текстовое представление gtk # или консоль, в зависимости от аргумента программы:
abstract class Stdout
{
public static readonly Stdout Instance = // ...
public abstract void WriteLine(string s);
private class Console : Stdout
{
public override void WriteLine(string s)
{
Console.WriteLine(s);
}
}
private class Gui : Stdout
{
public override void WriteLine(string s)
{
// append to gtk# textview
}
}
}