본문 바로가기
Programming/C#

[C#] Task란?

by SpiralMoon 2019. 2. 8.
반응형

 주제 : 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() 함수를 따로 사용하지 않아도 된다.

반응형

댓글