Task 클래스

Task 클래스와 이의 Generic형태인 Task<T>클래스는 .NET 4.0에 도입된 새로운 클래스들로서 쓰레드풀로부터 쓰레드를 가져와 비동기 작업을 실행한다. Task 관련 클래스들과 Parallel 클래스들을 합쳐 Task Parallel Library(TPL)이라 부르는데, 이들은 기본적으로 다중 CPU 병렬 처리를 염두에 두고 만들었다. Task 클래스는 .NET 4.0 이전 버전의 ThreadPool.QueueUserWorkItem()와 같은 기능을 제공하지만, 보다 빠르고 유연한 기능을 갖추고 있다.


방법 1

TaskFactroy.StartNew : Task를 만들고 시작합니다.  스레드 생성과 시작 동시에 

1
2
3
4
5
6
7
8
9
static void Main(string[] args)
        {
            // Task.Factory를 이용하여 쓰레드 생성과 시작
            Task.Factory.StartNew(new Action<object>(Run), null);
            Task.Factory.StartNew(new Action<object>(Run), "1st");
            Task.Factory.StartNew(Run, "2nd");
 
            Console.Read();
        }
cs

방법 2

Task 객체 만들고 Start() -> Wait();

Task 객체로부터 실제 쓰레드를 시작하기 위해서는 Start() 메서드를 호출하고, 종료때까지 기다리기 위해선 Wait() 메서드를 호출한다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
static void Main(string[] args)
        {
            // Task 생성자에 Run을 지정 Task 객체 생성
            Task t1 = new Task(new Action(Run));
 
            // 람다식을 이용 Task객체 생성
            Task t2 = new Task(() =>
            {
                Console.WriteLine("Long query");
            });
 
            // Task 쓰레드 시작
            t1.Start();
            t2.Start();
 
            // Task가 끝날 때까지 대기
            t1.Wait();
            t2.Wait();            
        }
 
        static void Run()
        {            
            Console.WriteLine("Long running method");
        }
cs


'.NET 개발 > C#' 카테고리의 다른 글

18.3 비동기 태스크 호출  (0) 2015.09.14
Task<T> Class  (0) 2015.08.10
Thread Class  (0) 2015.07.31
.Net Remoting  (0) 2015.07.30
Laze 클래스 란?  (0) 2015.07.21
Posted by Hoya0415
,