Problem: Callback Methode von Doc an RunTimeClass-Thread übergeben, aber wie?
-
Hallo.
MS VS2008 prof.
Win XP SP3
SDI-AppIch lese und probiere, und lese und probiere, aber ich verstehe es leider noch immer nicht.
Ich möchte einem Klassenbasierten Thread eine Callback-Methode übergeben.
Scheitern tu ich schon beim Versuch der Übergabe:[cpp] CWinThread m_pThread = (CMasterThread*) AfxBeginThread( RUNTIME_CLASS(CMasterThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPEND); m_pThread->SetCallback(&WriteValues); [/cpp](public:) WriteValues() wäre dabei die zu benutzende Callback-Methode.
Folgender Fehler wird vom Studio gemeldet:
error C2276: '&' Ungültige Operation auf Ausdruck einer gebundenen Memberfunktion.
Ich habe auch folgendes probiert:
[code] m_pThread->SetCallback(&this->WriteValues); [/code]Aber auch hier Fehlanzeige.
Am meisten würde ich mich darüber freuen, wenn ich es selber lösen könnte durch Verständnis, denn das scheint hier mein eigentliches Problem zu sein.
Sowohl die FAQ, als auch diverse Beispiele auf CodeProject ließen leider bei mir den Groschen nicht fallen.

Wer kann mir helfen?
-
Also CWinThread hat so weit ich weiss keine Funktion namens SetCallback(), also wirst du schon mal posten müssen was die wie macht.
-
Warum übergibst Du dem Thread nicht einfach einen Zeiger auf das Document und rufst die Methode aus dem Thread heraus entsprechend auf. Für was ein Callback an dieser Stelle?
-
@ CTecS
Ja richtig, diese habe ich in der betreffenden Klasse selber deklariert und rufe sie aus dem Doc heraus auf, bevor ich mit m_pThread->ResumeThread() das Ganze ins rollen bringe.
@ Martin Richter
Ich habe da auch schon dran gedacht, aber ich möchte diese Thread-Klasse so allgemein wie möglich halten und sie nicht von einem Objekt vom Typ CDocument abhängig machen.
Ich eröffne aus dem Doc heraus einen sog. MasterThread.
Dieser MasterThread läuft quasi ständig, bis das Doc ihn per gesetzter Member-BOOL zur Beendigung bringt.
Dieser MasterThread widerrum eröffnet dann n-viele WorkerThreads, welche Bildverarbeitungs-Algorithmen ausführen und ihre Ergebnisse dann per Callback an die entsprechende Methode im Doc übergeben sollen.Die Bilder samt ihrer Properties und die Callback-Adresse werden im MasterThread durch das Doc gesetzt, welcher diese widerrum bei der Eröffnung eines neuen WorkerThreads in diesen setzt.
Sobald der WorkerThread seine Aufgabe erledigt hat, soll er seine Werte an die genannte Callback-Methode im Doc übergeben.
Das Document (oder auch jede andere aufrufende Instanz bei Verwendung in anderen Projekten) kann dann ab dieser Stelle entscheiden, was mit den Werten zu passieren hat.