C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 16 を表示中)
■6247 / )  Re[9]: 画面切替をスムーズにしたい
□投稿者/ れい (35回)-(2007/08/06(Mon) 22:00:19)
No6244 (とっちゃん さん) に返信
> >User32.dllやgdi32.dllが初めて呼ばれた際に作られますから、
> >普通はRegisterClassでは?
> いや、USER/GDIのAPIが呼ばれたからキューを作るということはないです。
> メッセージキューは、ないとその後の処理が困るものを呼び出して初めてキューが作られます。
>
> なので極端な話、ウィンドウを作らずに、GetMessage() してもキューは作られます。
> #そうじゃなきゃ、OLEサーバーとか困っちまいますからw
>
> ですが、SendMessage/PostMessage で自分以外のスレッドのウィンドウあてにメッセージを送っても
> キューが作成されることはないと思います(キューの有無を判断する方法がないのでわかりませんが)。

キューがあるかないかは、
他のスレッドからPostThreadMessageを呼べばわかります。
キューがなければGetLastErrorがERROR_INVALID_THREAD_IDを返します。

この方法で調べてみたのですが、
驚いたことに、
SendMessageやPostMessgeでもRegisterClassでもキューが作成されています。

>後者は、ワーカースレッドで不必要にキューを作らないようにしておかないと、
>たくさんのスレッドを作成するプログラムで、必要のないキューを山ほど作り上げてしまう
>ということから考えても、ほぼ確実と言えます。

たくさんのワーカースレッドを使うときには
SendMessageやPostMessageで通信してはいけない
ということのようです。
返信 編集キー/


管理者用

- Child Tree -