head.WriteLine()

Donnerstag, Oktober 26, 2006

ConsoleTraceListener in WinForms nutzen, Teil 2

Wie Sie im ersten Teil bereits sehen konnten, ist die Anzeige eines separaten Trace-Konsolenfensters recht hilfreich bei der Laufzeitanalyse. Das Ändern des Projekttyps war hierbei zwar denkbar einfach, aber nicht unbedingt schön für den Produktivbetrieb beim Kunden. Schöne wäre es doch, wenn man das Konsolenfester dynamisch bei Bedarf starten könnte. Und das geht so:

Zunächst müssen Sie die Windows-API-Funktionen AllocConsole() und FreeConsole() deklarieren:

[DllImport("kernel32.dll")]
public static extern Boolean AllocConsole();

[DllImport("kernel32.dll")]
public static extern Boolean FreeConsole();

Nun können Sie dynamisch ein Konsolenfenster erstellen und ganz normal über den ConsoleTraceListener tracen:

AllocConsole();
Trace.Listeners.Add(new ConsoleTraceListener());
Trace.WriteLine("Hello Console Trace!");


Zum Schließen des Fensters rufen Sie schließlich FreeConsole() auf.

Im dritten und letzten Teil dieser kleinen Serie erfahren Sie, wie Sie den Konsolen-Output in ein WinForms-Control umleiten können.