.NET FrameworkのSystem.Threading.Threadを使用していて使用方法を誤って,大きなバグを招いてしまった。
System.Threading.Threadの使い方を間違えてしまった。
例えば,以下のようなコードでは最初のthread.Start()では意図通りRun()の中身が実行されるが,2回目のStart()では実行されない。
一応ドキュメントには載っている。
例外が発生すると思うのだが,どういうコンテキストで実行したか,例外が出ないことがあって大きなバグになってしまった。
一回一回new Thread(Run)を呼んでおけばよい。
using System; using System.Threading; namespace TEST_THREAD { class Program { static void Main(string[] args) { Thread thread = new Thread(Run); thread.Start(); Thread.Sleep(2000); thread.Start(); Thread.Sleep(2000); } private static void Run() { Console.WriteLine("Started"); } } }