2012-02-13 22 views
1

AfxMessageBox関数のスレッドは安全ですか?スレッドセーフとAfxMessageBox

AfxGetMainWnd() - > GetSafeHwnd()やCCmdTarget :: GetRoundingFrame _() - > GetSafeHwnd()などのAfxMessageBoxの背後にあるMFCコードがあり、スレッドの安全性が不思議です。

私は複数のGUIスレッドを持っている場合、どちらかからAfxMessageBoxを呼び出すことはできますか?

+0

これらのGUIスレッドには独自のメッセージループがありますか?または、単一のGUIスレッド(通常はメインスレッド)とワーカースレッドを持っていますか?ワーカースレッドから 'AfxMessageBox'を呼び出すと問題が発生するかもしれません。 –

+0

スレッドセーフとはあまり関係がありません。失敗モードは、別のウィンドウの背後にポップアップするメッセージボックスです。ユーザーには完全に不可視であり、モーダルではありません。 –

答えて

1

はいスレッドセーフです。 MSDNから:

AfxGetMainWndは、アプリケーションのプライマリスレッドから呼び出された場合、それは、上記の規則に従って、アプリケーションのメインウィンドウを返します。関数がアプリケーション内のセカンダリスレッドから呼び出された場合、この関数は呼び出しを行ったスレッドに関連付けられたメインウィンドウを返します。