Exemple #1
0
        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("스레드/프로세스 종료!");
        }
Exemple #2
0
        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();
        }