1
#include "MessageBoxThread.h"

MessageBoxThread::MessageBoxThread(NfcUIConfirmProcessUC* dialogUC)
{
    this->dialogUC = dialogUC;
}

MessageBoxThread::~MessageBoxThread(void)
{
}

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

1 に答える 1

2

wxThreadドキュメントから引用するには:

wxWindowやwxBitmapへの呼び出しなどのGUI呼び出しは、セカンダリスレッドでは明らかに安全ではなく、アプリケーションを途中で終了させる可能性があります。これは、基盤となるネイティブAPIや、wxThreadがMFCなどの他のAPIと同様のGUIイベントループを実行しないという事実など、いくつかの理由によるものです。[...]推奨される方法は、wxQueueEvent()によって投稿されたイベントを介してメインスレッドでGUI呼び出しを処理することです。

したがって、基本的にこの問題を解決する最善の方法は、Showを呼び出してイベント(たとえばwxThreadEvent)を作成し、それをダイアログにポストバックしてから、イベントマクロを使用するか、ダイアログを表示するダイアログメンバーにバインド接続することではありません。

于 2012-09-10T11:13:29.880 に答える