static void Main(string[] args) { SideTask task = new SideTask(100); Thread th = new Thread(task.CountDown); th.IsBackground = false; // 이 스레드가 종료되기 전까지는 프로세스가 끝나지 않음 // true인 경우, 백그라운드 스레가 돌고있는 상태에도 메인스레드가 끝나면 백그라운드 스레드도 같이 종료 SideTask task2 = new SideTask(100); Thread th2 = new Thread(task2.CountDown); // 기본값 IsBackground false Console.WriteLine("스레드 시작!"); th.Start(); th2.Start(); Thread.Sleep(100); // 1초 Console.WriteLine("인터럽트!"); th2.Interrupt(); // 인터럽트 //Console.WriteLine("임의 종료!"); //th.Abort(); Console.WriteLine("종료 대기"); // 카운트다운 중간에 표시 th.Join(); th2.Join(); Console.WriteLine("스레드/프로세스 종료!"); }
static void Main(string[] args) { SideTask task = new SideTask(100); Thread th = new Thread(task.Countdown); th.IsBackground = false; //이 스레드가 종료되기 전까지는 프로세스가 끝나지 않음 //ture 일때 : 백그라운드 스레드가 돌고 있는 상태에도 메인 스레드가 끝나면 모두 종료 Console.WriteLine("스레드 시작"); th.Start(); Thread.Sleep(1000); th.Join(); }