static void Main(string[] args) { SideTask task = new SideTask(100); Thread t = new Thread(task.KeepAlive); Console.WriteLine("Starting Thread..."); t.Start(); Thread.Sleep(100); Console.WriteLine("스레드 중지 메소드 실행"); t.Abort(); // 스레드 취소 메소드 실행 Console.WriteLine("메인 스레드 종료"); }
static void Main(string[] args) { SideTask task = new SideTask(100); Thread t = new Thread(task.KeepAlive); Console.WriteLine("Starting thread..."); t.Start(); Thread.Sleep(100); Console.WriteLine("스레드 중지 메소드 실행"); //t.Abort(); // 스레드 취소 메소드 실행(즉시 종료) t.Interrupt(); // 스레드가 Running이 아닌 WaitJoinSleep 상태일 때 예외를 던짐. Console.WriteLine("메인 스레드 종료"); }
static void Main(string[] args) { SideTask st = new SideTask(100); Thread t = new Thread(st.KeepAlive); Console.WriteLine("스레드 시작"); t.Start(); Thread.Sleep(100); // 0.1 초 멈춤 Console.WriteLine("스레드 중지 명령 실행"); //t.Abort(); t.Interrupt(); // 스레드가 Running 상태이면 기다리다가, WaitJoinSleep 상태일 때 죽임. Console.WriteLine("메인 스레드 종료"); }
static void Main(string[] args) { SideTask task = new SideTask(100); Thread t = new Thread(task.KeepAlive); Console.WriteLine("Starting thread..."); t.Start(); Thread.Sleep(100); Console.WriteLine("스레드 중지 메소드 실행"); t.Abort(); // 스레드 취소(종료), 스레드를 죽인다. , Abort() 메소드를 호출하면 CLR은 해당 스레드가 실행 중이던 코드에 ThreadAbortException 예외를 던진다. //t.Interrupt(); // 스레드가 Running인 상태를 피해 WaitJoinSleep 상태에 들어가면 ThreadInterruptedException 예외를 던진다. Console.WriteLine("Wating until thread stops..."); t.Join(); // 스레드가 완전히 정지할 때까지 대기한다. Console.WriteLine("Finished"); }