プロセス内のスレッド間通信について

[戻る]
hg [E-Mail] 2002/12/05(木) 10:51:32
hgと申します。
他プロセスからのエラー情報メッセージをダイアログベースの画面に表示するソフトを作成して
います。

プロセス間通信は、メールスロットで通信を行い、プロセスで受信したデータについては、
SharedMemoryを使用してプロセス内のスレッド通信を行っております。
各ダイアログベースの画面アプリケーションからSharedMemory上のデータをアクススする際
に、PretanslateMessage()を使用して常時監視するようにし、エラーデータが発生していれ
ば、画面に表示するというようにしているのですが、このようにした場合、各画面毎に
PretanslateMessage()関数を挿入しなければならないので作業量が大変であること、又、
PretansLateMessage関数の処理速度が遅いこともあり、現状、厳しい状況です。

できれば、親画面でこれらの状況を監視し、必要な情報についてのみ、各ダイアログ画面
に情報を送るようにしたいのですが、何か手段はあるでしょうか?

επιστημη 2002/12/05(木) 11:29:08
"メールスロットにお手紙書いたから読め!"っていうイベントを
各プロセスが投げることにしてはどうなんだろう。そうすれば、
受け側はそのイベントをじーっと待ってればいいんだし。

dairygoods 2002/12/05(木) 11:34:07
PreTanslateMessage()内に記述した処理は、メッセージの横取り
が目的ではなく、単に定期的にSharedMemoryを監視しているだけ
であるという認識で合ってますか?

もしそうであれば、CWinApp::OnIdle()が目的の処理をするのに
適した場所であると思います。

もし、PreTanslateMessage()内でなければならない状況であれば、
各ウィンドウではなく、CWinApp::PreTanslateMessage()でまと
めて処理できます。

渋木宏明(ひどり) [E-Mail] [HomePage] 2002/12/05(木) 18:08:05
>もしそうであれば、CWinApp::OnIdle()が目的の処理をするのに
>適した場所であると思います。

あるいはタイマーを使うのでもよさそうですね。

hg [E-Mail] 2002/12/07(土) 21:49:27
[[解決]]
hgです。ご返答遅れまして誠に申しわけありません。
これら意見を参考にして進めていこうと思っております。
どうもありがとうございました。

古いスレッドには追加発言できません。