Membervariablen in Thread verfügbar machen
-
hallo, wie bekomm ich einige Membervariablen aus meiner klasse in den thread... oder welche möglichkeit hab ich überhaupt, irgendwelche variablen dem thread mitzugeben.
Im moment siehts bei mir so aus:
void CJpg2bmpDlg::OnBNPlaySel() { AfxBeginThread(ProcessPlay, this); }
UINT CJpg2bmpDlg::ProcessPlay(LPVOID lpParam) { CJpg2bmpDlg* pThis = reinterpret_cast<CJpg2bmpDlg*>(lpParam); while(1) { pThis->SendMessage(WM_COMMAND, ID_PLAY); Sleep(1); } return 0; }
da aber die schleife nicht endlos laufen soll, sondern nur bis zu einem bestimmten wert der in einer membervariable drin steckt, bräuchte ich entweder hier die variable oder ich könnte
int CJpg2bmpDlg::PlaySelected() { DrawPicture(m_csSelFiles[m_nPlayCount]); m_nPlayCount++; return 123; }
hier AfxEndThread aufrufen ... was bis jetz aber immer mit dem nem fehler endet
mfg, TFTS
-
Mal abgesehen davon, dass du über pThis an diese Membervariable herankommen solltest: Hast du mal geprüft, ob deine 123 vielleicht im Rückgabewert von SendMessage landet? Dann könntest du das darüber steuern.
-
ja das hab ich probiert ... aber der rückgabewert landet da nicht ... aber wenn ich mit pThis ran komme ist ja alles bestens ... wusst ich ni
vielen dank,
mfg, TFTS
PS: wie kann ich den thread wieder über einen Button stoppen? mit
AfxEndThread(0);
stürzt mir das programm ab
-
Du musst einfach die Member variable entsprechend schreiben und dann aber den Zugriff darauf via CricialSection absichern...
-
TFTomSun schrieb:
aber wenn ich mit pThis ran komme ist ja alles bestenswusst ich ni
Wie gesagt... nicht vergessen mit CS zu sichern...
TFTomSun schrieb:
wie kann ich den thread wieder über einen Button stoppen? mit
AfxEndThread(0);
stürzt mir das programm ab
Ich empfehle Dir ein Event zu verwenden um den Thread zu benachrichtigen, dass er sich beenden soll. Dann solltest Du auf den Thread warten bis dieser sich beendet hat.
Im Thread selber solltest Du natürlich den Event entweder mit WaitForSingle/MultipleObjects warten oder ihn abfragen.Für Beispiele siehe auch codeproject.com