Absturz in Thread bei Zugriff auf Fortschrittbalken



  • Hallo Allerseits,

    in einem Thread will ich einen Fortschrittbalken aktualisieren, doch das Programm stürzt ab, sobald ich auf den Fortschrittbalken zugreife. Woran liegt das, bzw. kann ich das irgendwie umgehen?

    Danke, LVMH.



  • Ist ja schön und gut, dass du annimmst, wir seien Götter, doch wir sind keine. Auch wir kochen nur mit Wasser.

    Übrigens: Normalerweise stürzt das nicht ab. Also Fehler in deinem Code, und es gibt zig Möglichkeiten, den Fehler zu fabrizieren.



  • Woran es liegt hat Rene ja schon geschrieben,

    umgehen kannst Du es in dem Du die Fehler nicht machst ;o)

    Zeig mal bitte etwas Quellcode in dem man sieht wie Du das ganze versuchst.



  • also, danke erstmal dafür, dass ihr euch meines problems annehmt 🙂

    also hier ist der quelltext, die absturzstelle ist markiert:

    //in OnInitDialog
        CProgressCtrl *pProg = (CProgressCtrl*) GetDlgItem(IDC_PROGRESS1);
        pProg->SetRange(0,50);
    
    //die Threadfunktion, übergeben wird er Handle des Dialogs
    UINT MyThread(LPVOID pParam) 
    {
        int z=0;
        is_running = TRUE;
    
        CMyTestDlg *mydlg = (CMyTestDlg *)pParam;
    
        ****Absturzstelle**** 
            CProgressCtrl *pProg = (CProgressCtrl*)mydlg->GetDlgItem(IDC_PROGRESS1);
            ****Absturzstelle**** 
    
        while (thread_run)
        {
            //MyTestFunc()
            pProg->SetPos(z);
            z+=1;
            Sleep(1000);
        }
        is_running = FALSE;
        AfxMessageBox("test");
        return 0; 
    }
    
    //Ereignishandler der den Thread startet
    void CMyTestDlg::OnButtonStart() 
    {
    
        //thread erzeugen
        thread_run=TRUE;
    
        pThread = AfxBeginThread(   MyThread,
                        GetSafeHwnd(),
                        THREAD_PRIORITY_NORMAL);
    }
    

    ausserhalb des threads funktioniert der zugriff auf den fortschrittbalken ohne probleme, gleiche aufrufsynthax wie im thread...
    ohne fortschrittbalken läuft der thread auch tadellos...

    [ Dieser Beitrag wurde am 02.07.2003 um 09:38 Uhr von LVMH editiert. ]

    [ Dieser Beitrag wurde am 02.07.2003 um 09:40 Uhr von LVMH editiert. ]



  • Das kann nicht funktionieren. GetSafeHwnd liefert dir ein HWND, kein CMyTestDlg*.



  • Statt GetSafeHwnd() this übergeben.



  • Dank an Harrison Bergeron, wenn ich den handle auf den dialog übergebe funktionierts

    gruss, lvmh


Anmelden zum Antworten