У меня странная проблема с wxWidgets. У меня есть следующий код
MyFrame::OnDoSomeLongThing(...) {
progScreen = new wxProgressDialog(text,text,number,this,wxPD_AUTO_HIDE); // wxProgressDialog *progScreen is class member
doPartOfThing() // calls the update method at the end of it
....
doLastPartOfThing() // again calls update method that pushes value to 100/100
progScreen->Destroy();
}
MyFrame::update() {
progScreen->Update(newValue);
}
Теперь вот в чем дело. Я могу буквально закомментировать строки, относящиеся к progScreen, просто отпустить процесс, не используя диалоговое окно прогресса, после того, как все сказано и сделано, мои приложения завершают работу изящно, когда я закрываю главное окно.
Однако только использование диалогового окна прогресса как-то продлевает срок службы приложения. Я пробовал Destroy (), я пытался просто «удалить progScreen», и то и другое каждый раз: я закрою основной фрейм, процесс продолжится и в какой-то момент выйдет с каким-то астрономическим номером. Единственное, что я мог бы подумать, может быть уместным, это то, что методы doPartsOfThings могут вызывать boost :: this_thread :: sleep, потому что это включает ожидание и все остальное в моем классе модели. Но это не должно иметь какое-либо отношение к моей проблеме. Или, может быть, это ... РЕДАКТИРОВАТЬ: я хочу подчеркнуть, что progScreen-> Update () вызывается из основного потока (GUI).
Итак, я спрашиваю, правильно ли я использую wxProgressDialog? Если нет, то как его использовать?
Спасибо за вашу помощь!
EDIT:
Ну ... получается, что удаление wxPD_AUTO_HIDE решило проблему. Я все еще не совсем уверен, в чем проблема, но диалог даже все еще ведет себя как прежде. Приложение закрывается, как и ожидалось.