Console.SetOUT



  • Hallo,

    ich würde die Console gerne an 2 Kanäle weiterleiten. Dummerweise geht scheinbar nur einer.

    //Console in die Textbox umleiten
    Console.SetOut(TextWriter.Synchronized(new TextBoxWriter(txtOutput)));
    
    //Setzt es einfach wieder neu. Überschreibt also die 1.Anweisung :(
    //Console in File umleiten
    Console.SetOut(new StreamWriter("C:/Users/User/Desktop/log.txt"));
    


  • Schreib dir einen Stream, der mehrere Kanäle beschreiben kann und nimm den.



  • Aha. Wie würde das in etwa aussehen. Stream der in die Konsole schreibt. Hmm. Bei mir wird ja die Konsole umgeleitet.



  • Du musst einfach eine Klasse schreiben, die von TextWriter erbt und dessen Interface implementiert. Dazu muss lediglich die Funktion Write(char) implementiert werden. Dazu hat die Klasse eine Liste mit TextWritern, in die die Daten umgeleitet werden sollen. In der Funktion rufst du dann Write(char) der TextWriter in der Liste auf und schon wird in mehrere TextWriter geschrieben.

    Lässt sich in 2 Minuten implementieren...oder willst du etwa gespoonfeeded werden? 😉

    Benutzung wäre dann zB so:

    static void Main(string[] args)
    {
    	var combined = new CombinedWriter();
    
    	var writer1 = new StringWriter();
    	var writer2 = new StringWriter();
    
    	combined.Add(writer1);
    	combined.Add(writer2);
    
    	Console.SetOut(combined);
    
    	Console.Write("asd");
    
    	var s1 = writer1.ToString(); //"asd"
    	var s2 = writer2.ToString(); //"asd"
    }
    

Log in to reply