[この記事は18年前に書かれました]
NUnitのテストコードで以下のような、親スレッドが子スレッドより先に終了してしまうコードを書くと子スレッドは強制的に終了させられてしまうようです。
[Test] public void Test() { Thread thread1 = new Thread(new ThreadStart(Method1)); thread1.Start(); } public static void Method1() { Console.WriteLine("thread start"); Thread.Sleep(3000); for (int i = 0; i < 30; i++) { Console.WriteLine("thread:" + i); } }
出力:thread start
NUnitとしては、次のテストコードの実行に移るために 終了させちゃうのかな?(このあたりの理屈わかる方いますか?) とりあえず、Thread.Join()で待ち合わせすれば回避はできます。
コメント