Функция показа wxPanel не работает внутри wxThreads

#include "MessageBoxThread.h"
MessageBoxThread::MessageBoxThread(NfcUIConfirmProcessUC* dialogUC)
{
this->dialogUC = dialogUC;
}

MessageBoxThread::~MessageBoxThread(void)
{
}

void* MessageBoxThread::Entry()
{
this->dialogUC->Show(true);
return 0;
}

1

Решение

Цитировать из wxThread документы:

Вызовы GUI, такие как вызовы wxWindow или wxBitmap, явно не безопасны во вторичных потоках и могут преждевременно завершить ваше приложение. Это связано с несколькими причинами, включая базовый API-интерфейс и тот факт, что wxThread не запускает цикл событий GUI, аналогичный другим API-интерфейсам, как MFC. […] рекомендуемый способ — просто обрабатывать вызовы GUI в главном потоке через событие, которое публикуется wxQueueEvent ()

Таким образом, в основном, лучший способ решить эту проблему — это не вызывать Show, чтобы создать событие (например, wxThreadEvent), опубликовать его обратно в диалог, а затем с помощью макроса события или связать его с элементом диалога, который показывает диалог.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]