[C# 문법] Task 클래스 작업 인스턴스화
- C#/C# 문법
- 2022. 5. 22. 18:22
참고
Task 클래스란?
- Task 클래스는 Task 값을 반환하지 않고 일반적으로 비동기적으로 실행되는 단일 작업을 나타냅니다.
- Task 객체는 .NET Framework 4 에 처음 도입된 작업 기반 비동기 패턴의 핵심 구성 요소 중 하나입니다.
작업 인스턴스화
- 다음 예제에서는 4개의 작업을 만들고 실행합니다.
- 새로운 Task 형식 Object 의 Action 인수를 허용하는 action 대리자를 실행합니다.
- 네 번째 작업은 Task 만들기 메서드 호출에서 인라인으로 정의된 람다 식을 실행합니다.
- 각 작업은 인스턴스화되고 다른 방식으로 실행됩니다.
- t1 태스크는 Task 클래스 생성자를 호출하여 인스턴스화 되지만 태스크가 시작된 후에 t2 만 메서드를 Start() 호출하여 시작됩니다.
- t2 태스크는 인스턴스화되고 메서드를 호출하여 단일 메서드 호출에서 TaskFactory.StartNew(Action
- t3 태스크는 인스턴스화되고 메서드를 호출하여 단일 메서드 호출에서 Run 시작됩니다.
- t4 태스크는 RunSynchronously() 메서드를 호출하여 주 스레드에서 동기적으로 실행됩니다.
- 때문에 t4 작업은 동기적으로 실행되고, 나머지 작업은 일반적으로 하나 이상의 스레드 풀에서 비동기 적으로 실행됩니다.
Action<object> action = (object obj) =>
{
Console.WriteLine($"Task={Task.CurrentId} obj = {obj} Thread={Thread.CurrentThread.ManagedThreadId}");
};
Task t1 = new Task(action, "첫 번째 Task1");
Task t2 = Task.Factory.StartNew(action, "두 번째 Task2");
t2.Wait();
t1.Start();
Console.WriteLine("t1 has been launched. (Main Thread={0})",
Thread.CurrentThread.ManagedThreadId);
t1.Wait();
String taskData = "세 번째 Task3";
Task t3 = Task.Run(() =>
{
Console.WriteLine($"Task={Task.CurrentId} obj = {taskData} Thread={Thread.CurrentThread.ManagedThreadId}");
});
t3.Wait();
Task t4 = new Task(action, "네 번째 Task4");
t4.RunSynchronously();
t4.Wait();
Task=1 obj = 두 번째 Task2 Thread=6
t1 has been launched. (Main Thread=1)
Task=2 obj = 첫 번째 Task1 Thread=4
Task=3 obj = 세 번째 Task3 Thread=4
Task=4 obj = 네 번째 Task4 Thread=1
728x90
'C# > C# 문법' 카테고리의 다른 글
[C# 문법] C# 로컬 파일 다루기 (0) | 2022.05.26 |
---|---|
[C# 문법] Nullable 값 형식 (0) | 2022.05.22 |
[C# 문법] 대리자 및 람다 식 (0) | 2022.05.21 |
[C# 문법] C# List<T> Linq 중복 검사 하기 (0) | 2022.05.19 |
[C# MapSter] 순환참조 인 경우 맵핑하기 (0) | 2022.05.15 |
이 글을 공유하기