2011-12-25 4 views
0

別の.Netスレッドを開始したときに、現在ブロックされているかどうかを確認できますか(同期I/Oなど)?タイムアウトなどを使用したくないのですが、元の/ディスパッチスレッドから(ターゲット/ディスパッチスレッド)が作業中であるか現在保留中であるかを知りたいだけです。別の.Netスレッドがブロックされているかどうかを確認しますか?

これは可能ですか?

+0

これは意味がありません。スレッドがブロックされないのはいつですか? – SLaks

+0

http://stackoverflow.com/questions/235984/the-halting-problem-in-the-field – SLaks

答えて

2

ワーカースレッドのThread.ThreadStateプロパティを調べることができます。それはあなたにあまり詳細を与えることはありませんが、それは何よりも優れています。

3

あなたの質問は誤った区別に基づいています。スレッドが同期I/Oを実行している場合、スレッドは処理を進めています。何らかのバグを含んでいないと仮定すると、そのスレッドが実行していた作業の中でスレッドが進行する方法であれば、スレッドは同期I/Oでブロックするだけです。スレッドがブロックされているかどうかにかかわらず、スレッドは進行中です。

(。スレッドはバグがあるなら、それがブロックされていますかどうかをやっている仕事に進んですることはできません)あなたは、あなたの外側の問題を説明していない - あなたはこの情報とあなたが計画が必要だと思う理由それに関係する。しかし、あなたの実際の問題が何であれ解決する可能性があり、別のスレッドのステータスを調べることとは関係ありません。

原則として、レイヤリング違反であるため、スレッドが別のスレッドの処理を気にすることはできません。特定のスレッドの観点から見ると、そのスレッドによって行われなかったことはすべてプロセスによって行われます。スレッドは、特定の他のスレッド、スレッドのグループ、別のプロセス、または何でも。スレッドは、自分がやっている作業や他のものによって行われた作業については注意しなければなりません。

+0

David、説明をいただきありがとうございます。私の外側の問題は、実際にはI/Oとは異なるユースケースです。私はこれを閉じて、実際のユースケースで適切なQを投稿しますが、私はこれを編集/更新すると既存の回答を質問から切り離すと思います。 –

関連する問題