Forum: PC-Programmierung [c#] Komandofenster im Windows Form Anwendung


von Benedikt (Gast)


Lesenswert?

Gute Tag,

ich bin noch sehr unbedarft in c#.

Nun habe ich ein Programm geschieben um log dateien in csv zu parsen. 
Angefangen habe ich mit einer Konsolenanwendung, dort habe ich mir die 
"debug" infomationen per writeline ausgegeben.

Aufgrund der besseren Handhabung habe ich nun den Code in eine Windows 
From Anwenung übernommen um eine schöne GUI zu basteln. Dort wird mir 
nur noch mit einer Messagebox mitgeteilt wenn die Umwandlung vollendet 
ist.

Ich hätte aber gerne doch ein Debugfester, also z.B. ein Konsolenfenster 
das aufspringt und die Daten durchrasselt. Btw die logs sind durchaus 
groß 10-30MB textfiles.

Welches element würde sich da am besten anbieten? Oder gibt es eine 
möglichkeit ein Konsolenfenster zu öffnen und dort die ausgabe wie 
gehabt zu realisieren?

Tips reichen, brauch kein kompletten code, den bekomm ich schon selber 
hin.

Herzlichen Danke

Benedikt

von Ralf (Gast)


Lesenswert?

Du kannst ja einfach ein Textfeld in die GUI reindröseln und dort die 
Ausgabe machen. Oder ist das nix?

Ralf

von Arc N. (arc)


Lesenswert?

ListView, TextBox, DataGridView oder selber zeichnen (und in ein 
UserControl verpacken).
Allerdings geht bei diesen Datenmengen die Performance der Controls 
schnell in den Keller, wenn man's falsch macht. Z.B. nach jeder 
konvertierten Zeile ein Update des ListViews/der TextBox, statt nur alle 
100-1000 Zeilen, oder Strings verwenden, statt des wesentlich 
schnelleren StringBuilder etc.

von michl (Gast)


Lesenswert?

Hallo,

ich hab momentan leider kein Visual Studio zur Hand aber unter den 
Projekteigenschaften gibt es eine Option um die Konsole zu aktivieren. 
Dann hat man nebmen seiner GUI noch die normale Konsole und sieht da die 
Ausgaben.
Wenn du das Problem noch nicht behoben hast kann ich heute abend wenn 
ich daheim bin mal den genauen Ort und die Option schreiben.

Mfg
Michael

von Markus (Gast)


Lesenswert?

Wenn es wirklich nur zu Debug-Zwecken sein soll bietet .NET die Klasse 
System.Diagnostics.Debug. Diese hat die Methoden Write, WriteLine, 
unterstützt Einrückung, ... Die Ausgabe landet per Default im 
Output-Fenster von VisualStudio. Eigene Trace-Listener können 
angeschlossen werden, z.B. die Ausgabe in eine Datei, ... Ach ja, die 
Ausgaben erfolgen nur in der Debug-Version des Programms. Bei einem 
Releas-Build kommen sie nicht mehr.

Falls das nicht ausreicht gibt es log4net. Das ist ein vergleichsweise 
einfach anzuwendendes Logging-Framework, das per Konfigurations-Datei 
aktiviert oder deaktiviert werden kann. Es unterstützt Formatierungen, 
diverse Ausgabeziele wie Konsole, Datei und selbst gestrickte 
Ausgabe-Listener. Zu finden unter 
http://logging.apache.org/log4net/index.html

Gruß
Markus

von Benedikt (Gast)


Lesenswert?

@Markus

danke die System.Diagnostics.Debug ist für meine zwecke völlig 
ausreichend.

Vielen Dank für eure Mühe und die schnelle Hilfe

Benedikt

von Arc N. (arc)


Lesenswert?

Markus schrieb:
> Wenn es wirklich nur zu Debug-Zwecken sein soll bietet .NET die Klasse
> System.Diagnostics.Debug. Diese hat die Methoden Write, WriteLine,
> unterstützt Einrückung, ... Die Ausgabe landet per Default im
> Output-Fenster von VisualStudio.

und ist ca. um den Faktor 30 - 150 langsamer als eine optimierte 
TextBox-Version.

> Falls das nicht ausreicht gibt es log4net. Das ist ein vergleichsweise
> einfach anzuwendendes Logging-Framework, das per Konfigurations-Datei
> aktiviert oder deaktiviert werden kann. Es unterstützt Formatierungen,
> diverse Ausgabeziele wie Konsole, Datei und selbst gestrickte
> Ausgabe-Listener. Zu finden unter
> http://logging.apache.org/log4net/index.html

Wenn Performance und einfache Konfiguration wichtiger sind:
NLog

> Gruß
> Markus

von Markus V. (valvestino)


Lesenswert?

Arc Net schrieb:
> und ist ca. um den Faktor 30 - 150 langsamer als eine optimierte
> TextBox-Version.

Du hast sicherlich recht. Allerdings ist das für eine einfache 
Debug-Ausgabe, die man am Ende der Arbeit zumeist nicht mehr benötigt, 
mit Kanonen auf Spatzen geschossen. Ein einfacher Aufruf 
Debug.WriteLine(...) ist da im Bezug auf Programmieraufwand viel 
effizienter. Außerdem muß man sich nicht mit so Zeugs wie 
Worker-Threads, programmatischem Scrollen des Textes, ... kümmern. Zumal 
es wohl beim ursprünglichen Problem wirklich nur um die Kontrolle des 
Programmergebnisses geht. ;-)

> Wenn Performance und einfache Konfiguration wichtiger sind:
> NLog
Kannte ich bislang nicht. Ich schaue es mir aber mal heute Abend an, ob 
das wirklich so viel einfacher zu konfigurieren ist, wie auf der 
Startseite behauptet wird. ;-)

Gruß
Markus

von Mars (Gast)


Lesenswert?

Btw.:
Du musst nur in den Projektoptionen den Output Type auf 
Konsolenanwendung ändern und schon hast du eine Konsole.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.