Event Problem



  • Hallo,

    ich habe eine Funktin die viele Daten bearbeited die im haubprogramm gestarted wird.
    alerdings werden dan keine Events auf der oberfleche beabeted.
    aus diesen grund habe ich die hir zusehende Funktion benutzt um das alle Events beabeitet werde.

    void CWipeFreeDlg::DoEvents()    
    { 
        MSG msg;                    
    
        while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) {    
            if (!AfxGetThread()->PumpMessage()) return;      
        } 
    }
    

    das Problem ist aber das wen ich das Programm Beende das Fenster weg ist aber im Task-Manager leuft er noch da die funktion noch arbeited und Events sendet die wiert einfach nicht mehr beendet??

    Wie kann ich das fehidern??
    Wie kann ich dei Funktieon auch benden??

    MFG TaccoGo



  • Lass die zeitintesive Funktion als extra Thread laufen, dann solltest du keine Probleme haben.
    In diesem Thread kannst du dann immer eine globale Variable / Event überprüfen (wird aus dem Haupt-Thread gesetzt), um dann im gegebenen Fall auszulaufen 🙂

    Außerdem: Ist das nicht MFC-Code 😕



  • Hallo,

    naja das ist MFC aber das problem hat ja so nichts mit MFC zutun.

    gibt es hir was wo das mit den Thread erstelen gut erklert ist ??

    MFG TaccoGo



  • Könnte daher kommen weil du nicht auf die WM_QUIT Nachricht prüfst



  • Hallo,
    wen du das so kemeint hast dan get das auch nicht.

    void COberflche_alkDlg::DoEvents()   
        MSG msg;                    
        while (PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) {    vorhanden 
    
            if (!AfxGetThread()->PumpMessage()) return; 
    		if (msg.message==WM_CLOSE) return;
    		if (msg.message==WM_QUIT) return;
    	} 
    }
    

    oder wie dann??

    MFG TaccoGo



  • Ich weiß jetzt nicht, was genau PumpMessage() macht, aber bei WM_QUIT musst du dafür sorgen, dass er auch die Haupt-Nachrichtenscheife verlässt 😉



  • Hallo,

    das bekomme ich irgendwie nicht hin aber kann mir mal jemand ein schönes Bes. für Thread geben.(ich habe ja schon hir gesucht aber das was ich gemacht habe hat dei kleiche wiekkung.)

    MFG TaccoGo



  • Klappt denn das Starten des Threads? Denn dann sollte eigentlich auch die Message-Loop ohne Probleme weiterlaufen - oder was genau ist jetzt das Problem 🙄



  • Hallo,

    naja dei funktion wiert gestartet.

    ich habe in allen foren geschucht und bin auf ein Bes. zu AfxTreahts gestosen und das habe ich genommen.

    AfxBeginThread( (AFX_THREADPROC)geoTools.startProcessing(this,m_INI,16,arr),  this, THREAD_PRIORITY_NORMAL, 0,CREATE_SUSPENDED );
    

    oder wiest du was beseres??

    MFG TaccoGo




Anmelden zum Antworten