반응형
▶ 주제 : Task란?.
Task는 "작업" 혹은 "작업의 단위"를 뜻하며, C#에서는 Task 클래스를 이용하여 여러개의 작업을 동시에 관리하거나 비동기식으로 처리가 가능하다.
public class Task : IAsyncResult, IDisposable
Task는 인스턴스 가능한 클래스이며 IAsyncResult와 IDisposable을 상속한다.
▶ 예시
아래의 예시들은 Task를 이용하는 가장 기초적인 실행 방법들이다.
▷ Task 객체 초기화 시 Action을 파라미터로 넣어주는 방법
using System;
using System.Threading.Task;
class Program
{
static void Main(string[] args)
{
var task = new Task(Print);
task.Start(); // 작업 수행
task.Wait(); // 작업이 완료될 때 까지 대기
}
static void Print()
{
Console.WriteLine("Hello world!");
}
}
위 방법은 task 객체를 만들 때, 해당 task가 수행할 작업(위에서는 Print 함수)을 파라미터로 할당하고, 작업의 시작과 종료대기를 수행하는 방법이다.
위 방법으로는 반드시 Start 함수를 호출시켜야만 Print 함수가 작동하게 된다. 그 이유는 task 변수에 작업을 할당만 해놓고 시작은 안했기 때문.
▷ 리턴형식이 Task 함수를 직접 호출했을 경우
using System;
using System.Threading.Task;
class Program
{
static void Main(string[] args)
{
var example = new Example();
example.Print();
}
public class Example
{
public Task Print()
{
Console.WriteLine("Hello world!");
return Task.CompletedTask;
}
}
}
위 방법은 리턴형식이 Task인 함수를 호출하는 경우이다. 함수를 호출함과 동시에 시작(Start) 되므로 .Start() 함수를 따로 사용하지 않아도 된다.
반응형
'Programming > C#' 카테고리의 다른 글
[C#] 빌드 시 실행파일(exe) 이름 변경하기 (0) | 2020.10.25 |
---|---|
[C#] 확장 메소드 (Extension Methods) (0) | 2019.11.21 |
[C#] string + string 과 StringBuilder.Append() 차이 (0) | 2019.09.23 |
[C#] 프로젝트에 DLL 추가하기 (2) | 2019.03.08 |
[C#] DLL 추출하기 (0) | 2019.02.15 |
댓글