본문 바로가기
C++ 200제/코딩 IT 정보

C# TASK 7가지 사용법, C# 스레드는 이제 그만

by vicddory 2017. 8. 24.

C# TASK 7가지 사용법, C# 스레드는 이제 그만


C# 스레드 사용보단 C# task로 비동기 처리하는 습관을 들여야합니다. 스레드 구현에 드는 시간과 비용보단 닷넷프레임워크에서 제공하는 task 사용이 합리적입니다.


C# Task 비동기[C# TASK 7가지 사용법, C# 스레드는 이제 그만]


먼저, using 문을 추가합니다.


1
using System.Threading.Tasks;
cs


1. 직접 호출


1
2
Task.Factory.StartNew(() => {
    Console.WriteLine("Hello Task library!"); });
cs


2. Action 사용


1
2
Task task = new Task(new Action(PrintMessage));
task.Start();
cs


PrintMessage 함수는 아래와 같습니다.


1
2
3
4
private void PrintMessage()
{
    Console.WriteLine("Hello Task library!");
}
cs


3. 델리게이트 사용


1
2
Task task = new Task(delegate { PrintMessage(); });
task.Start();
cs


4. 람다(Lambda) 사용


1
2
Task task = new Task( () => PrintMessage() );
task.Start();
cs


5. 람다와 익명 함수(anonymous method)


1
2
Task task = new Task( () => { PrintMessage(); } );
task.Start();
cs


6. 닷넷 4.5 이상에선 Task.Run


1
2
3
4
public async Task DoWork()
{
    await Task.Run(() => PrintMessage());
}
cs


7. 닷넷 4.5 이상에서 Task.FromResult 사용


1
2
3
4
5
6
7
8
9
public async Task DoWork()
{
    int res = await Task.FromResult<int>(GetSum(45));   
}
 
private int GetSum(int a, int b)
{
    return a + b;
}
cs


C# TASK 전에는 C# 델리게이트를 이용한 구현이 일반적이었는데 이제는 이마저도 번거롭게 되었습니다. C# TASK 또는 Async 문법을 이용해 델리게이트 구현은 생략해도 무방해졌어요.


C# TASK 7가지 사용법, C# 스레드는 이제 그만

댓글