2013-06-20 10 views
8

Also frage ich mich, wenn eine reguläre winforms-Anwendung ausgeführt wird, wo schreibt die Console.WriteLine() Methode?Worauf schreibt Console.WriteLine() während der Veröffentlichung?

Ich weiß, dass während des Debuggens glücklicherweise den gesamten Text in der Debug-Ausgabe ausspuckt, aber wohin geht alles, wenn ich nicht mehr das Programm debugge und wie ein Endbenutzer verwenden würde? Geht es in irgendeine Art von Cache? Die Tiefen von RAM? Im Urlaub in Lettland?

Und wenn es in etwas schreibt, das während der Laufzeit zugänglich ist, können wir es irgendwie dem Benutzer zeigen oder schreiben Sie alles auf eine Textdatei oder etwas?

+0

Ich denke, Lettland ist die richtige Antwort;) Eine interessante Folgefrage könnte sein: Können Sie an die Standardausgabe eines laufenden Prozesses (für Protokollierungszwecke) anhängen? –

Antwort

4

Sprechen Sie über Console.WriteLine oder Debug.WriteLine?

Console.WriteLine funktioniert in der Debug- und Release-Konfiguration auf die gleiche Weise. Wenn Sie Ihr Projekt wie eine Konsolenanwendung konfigurieren und im Freigabemodus starten, erhalten Sie zunächst eine Konsole im Hintergrund, auf der Sie alle Ihre Ausgaben sehen. This is a Winform Project configured to run as console project and writes "Hello World" in form load event

Debug.WriteLine hat eine bedingte Anweisung, wenn DEBUG nicht definiert ist. Es schreibt nichts.

1

Console.WriteLine() schreibt im Debug- oder Release-Modus auf die Standardausgabe. So haben Sie eine Möglichkeit, es im Freigabemodus zu fangen.

Es gibt eine Alternative mit Debug.WriteLine, die, wenn ich mich erinnere, nicht in der Version kompiliert wird.

1

Ich denke, Ihre Frage ist wirklich über das Erfassen von Console.WriteLine(). Zuerst schreibt Console.WriteLine() in den Standard-Ausgabestrom, der durch Anfügen eines Konsolenfensters oder durch andere Mittel zum Abfangen des Streams gelesen werden kann.

Wenn Sie Debug oder Protokollinformationen erfassen möchten Sie

System.Diagnostics.Trace.WriteLine

Dann verwenden, die Ausgabe in eine Datei senden ein Sie konnte Setup TraceListener die eine Datei oder etwas sein könnte.

+1

Das stimmt nicht unbedingt. Man kann von der Standardausgabe lesen, ohne ein Konsolenfenster verwenden zu müssen. Es könnte zum Beispiel von einem Startprogramm gelesen werden, das 'Process.Start' verwendet, um es auszuführen und dann auf die Standardeingabe/-ausgabe zuzugreifen. – Servy

+0

@Servy, OK, ich habe meine Antwort aktualisiert, die ich hoffe, ist genauer. –