Fragen zu Logging, Threads, Nachrichten zwischen ihnen usw.



  • Hallo!

    Ich habe seit einiger Zeit ein Projekt im Kopf, was ich nun einfach mal angehen will. 🙂

    Die Situation ist folgende:
    Ich habe ein recht umfangreiches Programm. Da ich die Idee des Loggens aus einem anderen Projekt kannte, habe ich das auch gleich eingebaut.
    Das läuft auch prima und wenn ich mal am Testpc sitze, fühle ich mich regelrecht blind, weil ich es da nicht gleich sehe. In der Release wird es nur in eine Datei geschrieben.

    Nun habe ich irgendwo mal gesehen, dass ie ihre Loggingmeldungen auch in der Release auf dem Bildschirm ausgeben - sowas hätte ich auch gerne.

    Wie sollte das nun am besten laufen? Ich habe zwei Ideen:
    1. Ein Programm schreiben, was die Datei liest und anzeigt.
    Das gefällt mir aber nicht, weil das Flackern würde und Zeit frißt.

    2. Das Loggen in einen Thread auslagern und der schreibt die Datei und zeigt auf Wunsch auch an.

    Zu Idee 2 fehlen mir aber noch viele Sachen:
    1. Kann ein Thread eine eigene GUI haben? Ich denke an einen Dialog oder einen SDI ListCtrlView.
    2. Wie kann man Nachrichten zu dem Thread schicken? Am besten welche, die ein eigenes Format haben, denn ich logge
    Kennzahl
    Username
    Zeitstempel
    Zeichenkette
    (Dass es geht weiß ich, ich weiß nur nicht mehr wie...)

    Tja, das wäre erstmal alles, wenn ich das weiß, bin ich schon viel weiter... 🙂

    Ich weiß, dass die Antwort dazu ein Roman sein kann, aber vielleicht hat ja jemand Lesequellen?



  • Am besten ist Idee Nr. 2, das Loggen in einem separaten Thread.

    Threads unter Windows duerfen eine eigene Oberflaeche haben. Jedoch muss ein solcher Thread eine eigene Message-Loop haben (siehe GetMessage() Dokumentation, sowie Thread-Ueberblick Dokumentation im Platform SDK). Ein Thread muss seine Fenster selbst erstellen und vernichten, damit die Fensternachrichten an den richtigen Thread geschickt werden.

    Zum Schicken von Nachrichten zwischen Threads, die eine eigene Oeberflaeche haben, nimmt man am besten die Nachricht WM_COPYDATA (siehe WM_COPYDATA-Dokumentation).



  • Danke für die Stichworte - ich hatte echt keinen Plan, wo ich anfangen sollte mit Lesen. 🙂

    Momentan lese ich gerade ein Beispiel bei Codeproject (http://www.codeproject.com/threads/ipc_wmcopy.asp)

    Ich werde wohl einen Thread laufen lassen, dem ich immer die Meldungen "an den Kopf knalle" und der schreibt die je nach Einstellung in die Datei und wenn das Anzeigeprogramm gestartet ist, dann kriegt das die Meldung zugeschickt.

    So, nun gehe ich forschen. 🙂


Anmelden zum Antworten