본문 바로가기

프로그래밍&IT/C#

Thread 관련 간단 정리1. Thread / ThreadStart / ParameterizedThreadStart


개인적으로 중요하다고 생각되는 Thread 관련 처리입니다.


Thread 클래스 (System.Threading)

단순한 쓰레드 생성 및 실행입니다.

여기서 ThreadStart는 파라메터를 전달하지 않습니다.


using System.Threading;

namespace ConEx06

{

    class Program

    {

        static void Main(string[] args)

        {

            Thread t1 = new Thread(new ThreadStart(Run));    //델리게이트 타입으로 전달

            t1.Start();

        }


//실행할 함수

        public static void Run()

        {

            for(int i=0; i<10; i++)

            {

                Thread.Sleep(500);

                Console.WriteLine("ex: {0}", i);

            }

        }

    }

}

- 결과 -



- Thread클래스에 파라메터 전달위해서 ParameterizedThreadStart 사용하기

기본형식은 public delegate void ParameterizedThreadStart(object obj) 입니다.

namespace ConEx06

{

    class Program

    {

        static void Main(string[] args)

        {

            Thread t1 = new Thread(new ParameterizedThreadStart(Square));

            t1.Start(20.0);

            Thread t2 = new Thread(() => Sum(100, 100, 100));            //람다식 이용해서 전달할수도...

            t2.Start();

        }


        static void Square(object num)    // 기본적으로 object로 전달

        {

            double res = (double)num * (double)num;

            Console.WriteLine("Num: {0}, Square: {1}", (double)num, res);    

        }


        static void Sum(int n1, int n2, int n3)

        {

            int res = n1 + n2 + n3;

            Console.WriteLine(res);

        }

    }

}

- 결과 -