Thread Probleme mit Variablen



  • ich habe eine Form:

    class TFormMain : public TForm
    {
      ...
    
      static DWORD WINAPI ThreadProc(LPVOID lpParameter);
      void Test();
    
      TBool bTimeout;
    }
    

    meinen thread starte ich beim Click auf einen Button mit CreateThread

    if (hThreadTest = CreateThread(NULL,0,&ThreadProc,NULL,0,&udwThreadTestId)) bThreadTestRunning = true;
    

    der Aufruf meiner eigentlichen Threadfunktion sieht so aus.

    DWORD WINAPI TFormMain::ThreadProc(LPVOID lpParameter)
    {
    	((TFormMain *)lpParameter)->Test();
    	return(0);
    }
    

    wenn ich jetzt auf bTimeout zugreifen will bekomme ich eine exeption:

    void TFormMain::Test()
    {
        bTimeout = false;
    }
    

    Meldung: Im Projekt ... .exe trat ein Problem mit folgender Meldung auf: 'Zugriffsverletzung bei 0x00402e5c Schreiben von Adresse 0x00000768'. Prozesß angehalten Mit Einzelne Anweisung oder Start fortsetzen.

    Bin für Hinweise dankbar.

    MfG



  • Hallo

    Lies mal nach was der vierte Parameter der CreateThread-Funktion bedeutet und was du dort übergibst.

    Und warum benutzt du WinAPI-Threads und nicht TThread?

    bis bald
    akari



  • Danke habe den this Zeiger vergessen.

    Ich habe noch nie TThread benutzt, da ich auch mit Visual Studio programmiere. Sind TThreads einfacher zu handhaben?

    MfG



  • Hallo

    Sie entsprechen eben den VCL-Gegebenheiten und gerade der vergessene this-Zeiger wäre da kein Problem gewesen, arbeitet TThread doch bereits auf Methoden anstelle statischer Funktionen.

    bis bald
    akari


Anmelden zum Antworten