In to the C# 2014. 1. 26. 22:41

[C#] Task의 작업완료

Task는 기본적으로 ThreadPool을 사용하여 비동기 작업을 쉽게 구현할 수 있도록 도와 줍니다.

작업 후 동기화는 방법도 여러가지가 있습니다. 먼저 예제가 있습니다.

 

Line 1 ~ 2까지는 Action을 정의 한 후 Task로 시작 하였습니다.

Line 4는 Task의 작업을 기다리고 있습니다. Task의 작업이 오래 걸리면 중간의 작업이 완료될 때 까지 기다릴 수 있습니다.

Line 5는 조금 색다른 기능입니다. Task의 작업이 끝나면 t1의 작업이 끝나면 파라미터로 넘긴 익명메소드가 실행이 될 수 있도록 합니다. 이런 작업은 미리 후반 작업을 설정함으로써 Task 작업이 언제 종료될지 기다리고 관리할 필요가 없어집니다.

예제에는 _t1은 t1의 작업이 끝나면 파라미터 익명 메소드에 자기 자신을 파라미터로 넘깁니다.

Line 6은 Line 5와 똑같으며, 단시 리턴값이 있는 것입니다. Line 7은 return 값을 화면에 출력하는 것입니다.

 

Line 7에서 retTask.Result를 사용했는데 Result를 호출하면 retTask의 작업이 완료되기 까지 기다립니다. 중간에 Wait 메소드를 호출할 필요가 없는 거죠. 어차피 Result를 호출한다는 것은 작업이 완료되기 까지 기다리겠다는 뜻이니까요.

 

여기까지 Task의 동기화에 대해서 알아봤습니다.

 

'In to the C#' 카테고리의 다른 글

C# 6.0 New Features  (2) 2015.01.29
[C#] REST API 만들기  (0) 2014.02.13
[C#] Action, Func 그리고 Task  (0) 2014.01.26
[C#] Attribute : 속성  (0) 2014.01.24
Lazy Initialization  (0) 2014.01.20