Programmieren - alles kontrollieren 4.939 Themen, 20.672 Beiträge

Visual C++ (6 MFC): Thread soll Editbox füllen....

ExElNeT / 6 Antworten / Flachansicht Nickles

Hi!


Ich habe ein Problem ich möchte in einem Thread eine Berechnung durchführen, die ihre zwischenergebnisse an eine Editbox ausgibt. Nur leider .... wie so oft.... geht es nicht so wie ich es mir dachte!


hier mein code:


UINT CMyThread(LPVOID lpParam)
{
 CTestitDlg* cfg = reinterpret_cast<CTestitDlg*> (lpParam);
 
 for(int i = 0;i<100;i++)
 {  
  Sleep(100);
  CString str;
  str.Format("%d", i); 
  cfg->m_Test = str;


  cfg->UpdateData(FALSE); 
 }


 return 0;
}


void CTestitDlg::OnTest()
{
 // TODO: Add your control notification handler code here
 AfxBeginThread(CMyThread, this);
}


 


Bei UpdateData(FALSE); tritt ein Fehler in der wincore.cpp auf. Wie kann ich den Code umschreiben um eine funktionierende kommunikation zwischen neben und hauptthread herzustellen?


Ich bitte um Hülfe :)

bei Antwort benachrichtigen
thomas woelfer ExElNeT „nunja es liegt scheinbar nicht am synchronisieren oder ich habe“
Optionen

du _kannst_ nicht vom einen thread auf daten vom anderen thread zugreifen - egal ob du einen lock anlegst oder nicht: das hat nix damit zu tun. bei locks geht es darum das du daten auf die zugegriffen werden _darf_ davor schuetzt von zwei threads gleichzeitig verwendet zu werden. was du brauchst ist ein datum auf das zugegriffen werden darf ...

vieleicht hilft ja ein einfaches beispiel: wenn du den thread erzeugst dann kannst du unter anderem einen lpvoid zeiger setzen. wenn du nun vorher speicher allozierst und diesen zeiger auf den bereich setzt, dann kann der zweite thread da reinschreiben (weil er den zeiger beim erzeugen des threads exoplizit uebergeben bekommt.)

der zweite thread kann nun (z.b. in der idle behandlung) auf diesen bereich schauen und nachsehen ob der erste was reingeschrieben hat.

wie gesagt: die online-doku enthaelt mfc beispiele die das machen ...

WM_HOPETHISHELPS

this posting contains no tpyos.
bei Antwort benachrichtigen