@prefix schema: <https://schema.org/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix ks: <https://comcomponent.com/vocab/> .

<https://comcomponent.com/blog/csharp-sta-com-worker/#article>
    schema:about <https://comcomponent.com/knowledge/owned-sta-com-worker/> ;
    schema:mentions <https://comcomponent.com/knowledge/sta/>, <https://comcomponent.com/knowledge/message-loop/>, <https://comcomponent.com/knowledge/wpf-dispatcher/>, <https://comcomponent.com/knowledge/rcw/>, <https://comcomponent.com/knowledge/coinitializeex/> .

<https://comcomponent.com/knowledge/owned-sta-com-worker/> a skos:Concept ;
    skos:prefLabel "専用STA COMワーカー"@ja ;
    skos:definition "専用のSTAスレッドとメッセージループを持ち、そのスレッドでCOMを生成・利用・解放するアプリケーション内の構成。外部からは同期操作をキュー経由で依頼し、参照ではなく結果データを受け取る。採用にはコンポーネントがそのSTA内で利用可能であることが必要。"@ja ;
    skos:altLabel "COM専用STAスレッド"@ja .

<https://comcomponent.com/knowledge/sta/> a skos:Concept ;
    skos:prefLabel "STA(Single-Threaded Apartment)"@ja ;
    skos:definition "1スレッドに1つのApartmentが対応し、そのApartment内のCOMオブジェクトは基本的に生成したスレッドでのみ実行されるCOMのスレッドモデル。"@ja ;
    skos:altLabel "シングルスレッドアパートメント"@ja ;
    skos:altLabel "Single-Threaded Apartment" ;
    skos:broader <https://comcomponent.com/knowledge/com-apartment-model/> .

<https://comcomponent.com/knowledge/message-loop/> a skos:Concept ;
    skos:prefLabel "メッセージループ"@ja ;
    skos:definition "スレッドがGetMessage/DispatchMessageなどで自分のウィンドウ宛てのメッセージを順に取り出し処理し続ける仕組み。入力・描画・イベント処理を担うと同時に、STAが持つOleMainThreadWndClassという隠しウィンドウ宛てに届く、別アパートメントからの呼び出しメッセージもここでディスパッチされる。"@ja ;
    skos:altLabel "OleMainThreadWndClass" ;
    skos:broader <https://comcomponent.com/knowledge/com-apartment-model/> .

<https://comcomponent.com/knowledge/wpf-dispatcher/> a skos:Concept ;
    skos:prefLabel "Dispatcher(WPF)"@ja ;
    skos:definition "WPFのUIスレッド上で処理を順番に実行するためのメッセージキューを管理するクラス。DispatcherTimerのTickもこのキューに積まれる。"@ja ;
    skos:altLabel "System.Windows.Threading.Dispatcher" ;
    skos:altLabel "UIスレッドのメッセージキュー"@ja .

<https://comcomponent.com/knowledge/rcw/> a skos:Concept ;
    skos:prefLabel "RCW(Runtime Callable Wrapper)"@ja ;
    skos:definition ".NETがCOMオブジェクトを操作するために生成するプロキシ。COMインターフェイスポインターをキャッシュし、GCに回収されるときにCOMオブジェクトへの参照を解放する。"@ja ;
    skos:altLabel "Runtime Callable Wrapper" .

<https://comcomponent.com/knowledge/coinitializeex/> a skos:Concept ;
    skos:prefLabel "CoInitializeEx"@ja ;
    skos:definition "COMを使う各スレッドが個別に呼んで初期化する必要があるWin32 API。"@ja .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/owned-sta-com-worker/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/sta/> ;
    schema:description "専用ワーカーは、対応するコンポーネントの生成・利用・解放を所有STAへ集約する。"@ja ;
    ks:evidence <https://comcomponent.com/blog/csharp-sta-com-worker/>, <https://learn.microsoft.com/en-us/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-09-15" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/owned-sta-com-worker/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/message-loop/> ;
    schema:description "他のアパートメントからの呼び出しなどを受けるため、専用STAにもメッセージループを持たせる。"@ja ;
    ks:evidence <https://comcomponent.com/blog/csharp-sta-com-worker/>, <https://learn.microsoft.com/en-us/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-09-15" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/owned-sta-com-worker/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/wpf-dispatcher/> ;
    schema:description "この実装では専用スレッドのメッセージ処理にWPF Dispatcherを選び、業務要求は別の上限付きキューで管理する。"@ja ;
    ks:evidence <https://comcomponent.com/blog/csharp-sta-com-worker/>, <https://learn.microsoft.com/en-us/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-09-15" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/owned-sta-com-worker/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/rcw/> ;
    schema:description "検証用COMのRCWはセッション内部で独占し、UIへ返さず、その契約の下で解放する。"@ja ;
    ks:evidence <https://comcomponent.com/blog/csharp-sta-com-worker/>, <https://learn.microsoft.com/en-us/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-09-15" ;
    ks:certainty "context-dependent" .

[] a rdf:Statement ;
    rdf:subject <https://comcomponent.com/knowledge/owned-sta-com-worker/> ;
    rdf:predicate ks:uses ;
    rdf:object <https://comcomponent.com/knowledge/coinitializeex/> ;
    schema:description "専用スレッドでCOMを初期化し、自分が行った成功呼び出しと終了処理の対応を取る。"@ja ;
    ks:evidence <https://comcomponent.com/blog/csharp-sta-com-worker/>, <https://learn.microsoft.com/en-us/windows/win32/com/single-threaded-apartments> ;
    ks:verifiedAt "2026-09-15" ;
    ks:certainty "context-dependent" .
