본문 바로가기
C#/책 예제

C# Thread 임의 종료

by HyunS_ 2019. 6. 8.
using System;
using System.Threading;

namespace ThreadNTask
{
    class Program
    {
        static void Main(string[] args)
        {
            SlideTask slideTask = new SlideTask(100);
            Thread thread = new Thread(new ThreadStart(slideTask.KeepAlive));
            thread.IsBackground = true;

            Console.WriteLine("스레드를 시작합니다.");
            thread.Start();

            Thread.Sleep(500);

            Console.WriteLine("스레드를 종료합니다.");
            thread.Abort();

            Console.WriteLine("스레드가 멈출때까지 대기합니다.");
            thread.Join();

            Console.WriteLine("종료");
        }
    }

    class SlideTask
    { 
        private int count;

        public SlideTask(int count)
        { 
            this.count = count;
        }

        public void KeepAlive()
        {
            try
            {
                while(this.count > 0)
                {
                    Console.WriteLine($"{count--} left");
                    Thread.Sleep(10);
                }
                Console.WriteLine("Count: 0");
            }
            catch(ThreadAbortException threadAbortException)
            {
                Console.WriteLine(threadAbortException);
                Thread.ResetAbort();
            }
            finally
            {
                Console.WriteLine("Clearing resouce");
            }
        }
    }
}
728x90

'C# > 책 예제' 카테고리의 다른 글

C# Thread Monitor 키워드를 이용한 동기화  (0) 2019.06.08
C# Thread lock 키워드를 이용한 동기화  (0) 2019.06.08
C# Thread 인터럽트로 종료하기.  (0) 2019.06.08
C# Thread 상태 변화  (0) 2019.06.08
C# / Thread 시작  (0) 2019.06.08

댓글