NUnitテストコードで子スレッドが勝手に終了?

C#

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

コメント

タイトルとURLをコピーしました