반응형

C# System.Threading클래스의 사용법

 

1. Thread 생성

        Thread TestThread = null; // thread 이름 지정
        private void _TestThread()
        {
            int n = 0;
            for(; ; )
            {
                n++;
                Debug.WriteLine(n);
                Thread.Sleep(500);
                    
            }
        }
        private void Button_Click_6(object sender, RoutedEventArgs e)
        {
            if(TestThread == null) // TestThread에 지정이 안되어 있으면 지정함.
            {
                TestThread = new Thread(_TestThread);
                Debug.WriteLine(TestThread.ThreadState);
            }

        }
        
                

output: Unstarted  (생성만 되고 실행 안됨)

 

2. Thread 시작 (start)

        private void Button_Click_7(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine(TestThread.ThreadState);

            TestThread.Start();
            Debug.WriteLine(TestThread.ThreadState);

        }

output: Running (실행중, 반복문 돌아감)

 

3. Thread 정지 (Suspend)

        private void Button_Click_9(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine(TestThread.ThreadState);

            TestThread.Suspend();
            Debug.WriteLine(TestThread.ThreadState);
        }

output: SuspendRequested, WaitSleepJoin  (sleep 중에 이렇게 뜨고) -> Suspended (금방 이렇게 바뀜)

 

4. Thread 재시작 (Resume)

        private void Button_Click_11(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine(TestThread.ThreadState);

            TestThread.Resume();
            Debug.WriteLine(TestThread.ThreadState);
        }

output: Suspended -> Running

 

4. Thread 중단 (Abort)

        private void Button_Click_10(object sender, RoutedEventArgs e)
        {
            Debug.WriteLine(TestThread.ThreadState);

            TestThread.Abort();
            Debug.WriteLine(TestThread.ThreadState);
        }

output: 

예외 발생: 'System.Threading.ThreadAbortException'(mscorlib.dll)
AbortRequested
0x6b40 스레드가 종료되었습니다(코드: 0 (0x0)).
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기