C#/수업 내용

스레드

hyunjin-dev-log 2021. 12. 24. 22:39
using System;
using System.Threading; //1. using지시문 추가

namespace HelloWorld
{
    class App
    {
        //생성자
        public App()
        {
            //3. ThreadStart객체 생성 (대리자)
            ThreadStart ts = new ThreadStart(Work); //대리자 인스턴스화
            // = ThreadStart ts = this.Work;
            // = ThreadStart ts = () => { };

            //4. 스레드 객체를 생성한다
            Thread t = new Thread(ts);

            Console.WriteLine(t.ThreadState);   //Unstarted

            t.Start();  //Unstarted -> Running

            Console.WriteLine(t.ThreadState);   //Running

            t.Join();   //작업 스레드가 하는일이 끝날때까지 대기

            Console.WriteLine(t.ThreadState);   //Stopped

        }

        //2. 작업스레드에서 동작할 메서드 정의
        void Work()
        {
            for (int i = 0; i < 10; i++)
            {
                Console.WriteLine(i);
                Thread.Sleep(1000); //지정된 시간(밀리초) 동안 현재 스레드를 일시 중단합니다.
            }
        }
    }
}