- PR -

JavaのThread.isInterruptedにあたるプロパティ

1
投稿者投稿内容
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2007-10-22 00:18
JavaであればThread.interruptメソッドは単にインタラプト状態を変更するだけで、
そのインタラプト状態は公開されていてそれを調べて明示的にInterruptedExceptionをスローできるようですが、
.NETにはそれに相当するものが見つかりません。
.NETのThread.Interruptメソッドは「WaitSleepJoin」状態であれば
内部でThreadInterruptExceptionが投げられますが、
WaitSleepJoinでない場合、Interruptされたかどうかを取得したくてもその方法がわかりません。
(Interrput状態でも、ThreadStateプロパティは「Running」になります。)

公開されていなければ自分でフラグを立てますが、
.NETではInterrruptメソッドを呼んだかどうかの取得は不可能なのでしょうか?
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2007-10-22 23:24
あまりいいやり方とは言えないと思いますが、
Thread.Sleep(0);
とでもして明示的に例外を発生させてやるしかなさそうな感じです。
※少なくともふつうに公開されている機能では

頻繁に調べるつもりなら、自分でフラグを管理したほうがいいかもしれません。
hei
ベテラン
会議室デビュー日: 2006/09/07
投稿数: 78
投稿日時: 2007-10-23 00:13
>頻繁に調べるつもりなら、自分でフラグを管理したほうがいいかもしれません。

2重にチェックしているようで気が進まなかったのですが、
公開されていない以上これがいいみたいですね。
なちゃさん、ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)