Вы должны вызвать метод Exit () из вашего рабочего потока или просто вернуться из метода Run и вызвать метод MyThread-> Wait (), а затем удалить объект потока.
Объявление потока:
class MyThread : public wxThread {
virtual void * run();
};
Реализация потока:
MyThread::run()
{
while(1)
{
if(TestDestroy())
{
this.Exit(); // or return;
}
// Do some work
}
}
Объявление указателя потока:
MyThread * pMyThread;
Создание, запуск и остановка потока
void launchThread{
pMyThread = new wxThread(wxTHREAD_JOINABLE);
pMyThread->Create();
pMyThread->Run();
}
void stopThread(){
pMyThread->Delete();
pMyThread->Wait();
delete pMyThread;
}
Надеюсь, что это поможет.
PS: это мой первый ответ на переполнение стека.Я не знаю, как я могу легко написать какой-нибудь код с автоматическим отступом?