Nachrichten oder Methodenaufruf
-
Hallo,
mir ist ein Sachverhalt, was Nachrichten angeht, nicht so ganz klar und ich hoffe auf Eure Hilfe.
Nehmen wir mal an ich habe eine Klasse CServer. Diese Klasse erzeugt ein par Threads.
Jetzt möchte ich, daß der Thread der Klasse CServer mitteilt, wann seine Arbeit beendet ist.
Der Thread hat einen Zeiger auf CServer: m_pServer;Jetzt gibt es doch 2 Möglichkeiten, dies zu tun (wenn ich nicht völlig danebenliege).
1. Nachrichten:
Ich kann doch eine Nachricht definieren
#define WN_MEINENCHRICHT (WM_USER + 1) // Korrigiert mich, wenn das falsch ist
und im Thread eine Nachricht an den Server schicken
m_pServer->PostMessage(WM_MEINENACHRICHT,0,0);
(eine Frage ist auch noch, was genau die 0, 0 bedeutet)
Jetzt muß der Server diese Nachricht abfangen und behandeln.Aber ich könnte doch einfach aus dem Thread eine Methode des Servers aufrufen, z.B.
m_pServer->ThreadFinished(int ThreadID);
welche dann z.B. den Thread beendet.Meine Frage:
Wo ist der genaue Unterschied zwischen den zwei Varianten ? Welche benutzt man ?
Oder sind beide gleichwertig ?Ein par Fragen am Rande hätte ich auch noch:
Zu 1) Wie fange ich die Nachricht beim Server ab ?
Mache ich das mit einem
ON_MESSAGE(WN_MEINENCHRICHT , MeinNachrichenHandler) ?
Muß dann die Zeile
#define WN_MEINENCHRICHT (WM_USER + 1)
in der Threadklasse und in CServer stehen ?PS: Ich weiß nicht genau, ob PostMessage zur MFC gehört oder nicht.
Bitte seit nicht böse, wenn ich mit MFC die falsche Kategorie erwischt hab.
-
Keine von beiden!
-
Wie sollte man es dann lösen ?
-
Ach ja,
und warum denn keine von beiden ?
-
Zu 1.: Weil nicht jede Klasse CServer auch dazu geeignet ist, Nachrichten zu verarbeiten
Zu 2.: Wenn man ein Kind Rad fahren lässt, und möchte, dass es aufhört, wird man es ihm auch sagen und es nicht einfach vom Rad schuppsen!