[この記事は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()で待ち合わせすれば回避はできます。
コメント