メッセージループ
スレッドがGetMessage/DispatchMessageなどで自分のウィンドウ宛てのメッセージを順に取り出し処理し続ける仕組み。入力・描画・イベント処理を担うと同時に、STAが持つOleMainThreadWndClassという隠しウィンドウ宛てに届く、別アパートメントからの呼び出しメッセージもここでディスパッチされる。
- 概念URI
https://comcomponent.com/knowledge/message-loop/
- 別名・表記
- OleMainThreadWndClass
- 上位概念
- COMアパートメントモデル(STA/MTA)
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- COMアパートメントモデル(STA/MTA)はメッセージループを前提とします。STA(single-threaded apartment)ではメッセージループが必要で、これは作法ではなく、隠しウィンドウ宛てのメッセージとして呼び出しを配達する仕組みそのものである。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- メッセージループはSTAスレッドのブロックによるデッドロックを防ぎます。メッセージループが動き続けることで別アパートメントからの呼び出しメッセージが取り出され続け、UIスレッドをブロックして取り出しを止めることによるデッドロックを避けられる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- STA(Single-Threaded Apartment)はメッセージループを前提とします。各STAは、他のプロセスや同一プロセス内の他のApartmentからの呼び出しを処理するために、メッセージループを持たなければならない。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- Windows Formsはメッセージループを利用します。UIスレッドはウィンドウイベントを処理するために必ずメッセージループを回しており、STAの前提を追加実装なしで満たす。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- メッセージループはSTAのハング(呼び出し転送の停止)を防ぎます。STAスレッドがメッセージループを回していれば、転送された呼び出しのメッセージを受け取って実行に回せる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- UIスレッドのコンテキストはメッセージループを前提とします。WPF/WinFormsのUIスレッドは、入力・描画・イベント処理を順に取り出して処理するメッセージループを回し続けることで応答性を保つ。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。