본문 바로가기
개발/기본) 기본기

기본기)c#) Async / Await 사용법

by 테샤르 2021. 4. 14.

Async / Await 사용법

Task 비동기는 코드에 대한 추상화가 가능하고 비동기적으로 실행된다.

 

Await 키워드는 작업을 차단하지 않는 방식으로 처리 Async / Await 사용법

Task 비동기는 코드에 대한 추상화가 가능하고 비동기적으로 실행된다.

 

static async Task<Toast> MakeToastWithButterAndJamAsync(int number)
{
    var toast = await ToastBreadAsync(number);
    ApplyButter(toast);
    ApplyJam(toast);

    return toast;
}

 

Task를 사용해서 백그라운드 스레드를 시작하고 Await를 사용해서 결과를 기다리고 후 처리된다.

private DamageResult CalculateDamageDone()
{
    // Code omitted:
    //
    // Does an expensive calculation and returns
    // the result of that calculation.
}

calculateButton.Clicked += async (o, e) =>
{
    // This line will yield control to the UI while CalculateDamageDone()
    // performs its work. The UI thread is free to perform other work.
    var damageResult = await Task.Run(() => CalculateDamageDone());
    DisplayDamage(damageResult);
};

Task <TResult> 반환 형식에 대한 처리는 다음과 같다.

public static async Task ShowTodaysInfoAsync()
{
    string message =
        $"Today is {DateTime.Today:D}\n" +
        "Today's hours of leisure: " +
        $"{await GetLeisureHoursAsync()}";

    Console.WriteLine(message);
}

static async Task<int> GetLeisureHoursAsync()
{
    DayOfWeek today = await Task.FromResult(DateTime.Now.DayOfWeek);

    int leisureHours =
        today is DayOfWeek.Saturday || today is DayOfWeek.Sunday
        ? 16 : 5;

    return leisureHours;
}
// Example output:
//    Today is Wednesday, May 24, 2017
// 

 

Microsoft async 및 await를 사용한 비동기 프로그래밍 : [링크]

 

C#의 비동기 프로그래밍

async, await 및 Task를 사용하여 비동기 프로그래밍을 지원하는 C# 언어에 대해 간략히 설명합니다.

docs.microsoft.com

 

 

 

반응형

댓글