最近、メイン/ UIスレッドではなく、別のスレッドでフォームを表示したいという状況に遭遇しました。私はスレッドプールスレッドを使用しました。フォームはRCW(COMコンポーネント用)をホストしました。フォームをインスタンス化すると、スレッドはSTAでなければならないという例外がありました。私はSTAとしてアパートの状態を設定しようとしました。しかし、それはどちらもうまくいかなかった。私は最終的にスレッドを明示的に作成することになり、それがうまくいった(私はShowDialogを使用し、メイジポンプを作成する必要はない)。なぜ私たちはThreadPoolスレッドのアパートの状態を変更できないのですか?また、ShowDialogが使用されているときにメッセージポンプを必要としないのはなぜですか?
EDIT:
- 私は、スレッドプールのスレッドが MTAであることを知っています。しかし、なぜSTAに設定できないのですか? これについてはちょっと不思議です。ちょうど で私の頭をポップ
- もう一つの問題は、:にShowDialog()(
表示形式に)
答えをありがとう。 ShowDialog()が独自のメッセージループを開始すると言うリンクを指すことができます。 –
http://www.red-gate.com/products/reflector推奨します。 –
ありがとうございます。 Application.RunDialog(これは)トリックを行います。 –