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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.6247 の関連記事表示

<< 0 >>
■6247  Re[9]: 画面切替をスムーズにしたい
□投稿者/ れい -(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で通信してはいけない
    ということのようです。
記事No.6188 のレス /過去ログ16より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -