私はこの単純なコードを持っています。 プロセスエクスプローラとVSデバッガのどちらかで、スレッドが作成され、その状態が「実行中」であることがわかります。スレッドの問題
メインスレッドのアパートはSTAです。私は内部スレッドでSTAとMTAの両方を試しました。
最後にRun()
メソッドに追加すると、invokerThread.Join();
のスレッドが実行されます。しかしもう一度それは本当に助けにはならない。
私には何が欠けていますか?
編集:ここでは、コードホスティングに関するいくつかの詳細は、 -
Run()
方法はまた、COM相互運用機能を使用する理由は、であるため、他のすべての構成要素である(実行アセンブリを管理しているプロセスからCOM相互運用機能を介して呼び出されますシステムはネイティブです)。
RunOnBackground()
のメソッドは、トレースの後にいくつかのコードを含み、一般にその実行は別のプロセスを開始し、その終了を待つことを含めて、10〜20秒間続きます。また、トレースにいくつかのデバッグ情報を書き込むコードのいくつかの領域があります。コードをデバッグしている間に、の後にRun()
が正常に実行されます。RunOnBackground()
メソッド内のブレークポイントは停止しませんが、invokerThreadの状態は「実行中」です。
私は、デバッガがJoin()
後RunOnBackground()
に行くRun()
メソッドの最後にinvokerThread.Join()
を追加します。
メッセージボックスをワーカースレッド内に表示しないでください。トレースを使用するように変更 –
コードを更新しました。まだ動作しません。私がマーティンに書いた回答を見てください。 – Aaron
あなたは言った: "残念なことに、このコードを(第三者のプロセスから)実行するとスレッドは実際には動かない"どのように正確に "このコードを実行していますか"? –