1

Thread.Abortは、スリープしているスレッドに割り込むことができますか(たとえば、Thread.Sleep(TimeSpan.FromDays(40)を使用)?または、スリープ期間が終了するまで待機しますか?

(備考:FromDays(40)はもちろん冗談です。そして、Thread.Abortはスレッドを停止するための推奨される方法ではないことを知っています。今のところ、リファクタリングしたくないレガシーコードを使用しています。)

4

2 に答える 2

6

コードは千の言葉に値します:

public static void Main(string[] args)
{
    var sleepy = new Thread(() => Thread.Sleep(20000));

    sleepy.Start();
    Thread.Sleep(100);
    sleepy.Abort();
    sleepy.Join();
}

プログラムは、スリープ時間がなくなる前に終了します。

于 2010-03-03T11:03:54.510 に答える
-2

別のスレッドからのみスレッドを中止できます。つまり、スレッド参照をどこかに保存して.Abortから、スリープしているスレッド以外のスレッドから呼び出す必要があります。

于 2010-03-03T11:01:33.213 に答える