2011-01-14 18 views
1

ワーカースレッドの1つからコードを実行するようにメインスレッドに通知する必要があります。ワーカースレッドからメインスレッドでコードを実行する

このコードは、COMの問題(スレッド上で実行すると失敗する)のためにメインスレッドで実行する必要があります。

私は、JavaとSWTでそれを行うにはいくつかの非常にシンプルでストレートな方法があったremeberedときに私は

)(私はフォワード行く前に実行されるコードを待つ必要がある)のメッセージやイベントでそれを実装するために始めていました
display.syncExec (new Runnable() { 
    public void run() { 
    if (!myWindow.isDisposed()) 
     myWindow.redraw(); 
    } 

MFCと一般的なウィンドウで同様のものはありますか?

+0

Lishi、あなたのスレッドでメッセージポンプを管理することを忘れないでください! –

答えて

1

PostThreadMessage WinAPI関数を使用して、WM_USERメッセージをメインスレッドに送信できます。その後、メインスレッドでWM_USERを処理し、必要なアクションを実行できます。

+1

PostThreadMessageは、ユーザーインターフェイスも表示するスレッドには使用しないでください。どのモーダルループでも、そのようなメッセージがビットバケットに入ります。ウィンドウのサイズ変更、メッセージボックスの表示、ダイアログの表示などに使用されます。 PostMessage()を使用します。 –

関連する問題