본문 바로가기

워크/C# 5.0

Async/Await

asyncawait 키워드를 사용하여 비동기 프로그래밍을 구현한 C# 코드 예시입니다.

이 예시에서는 두 가지 비동기 메서드를 만들어서, 그것들을 사용하여 어떻게 비동기적으로 작업을 수행하는지 보여줍니다.

using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        Console.WriteLine("Start downloading...");
        
        string content = await DownloadWebsiteContentAsync("https://www.example.com");
        
        Console.WriteLine("Downloaded content length: " + content.Length);
        Console.WriteLine("Download complete!");

        int result = await ComputeValueAsync();
        Console.WriteLine($"Computed value: {result}");
    }

    static async Task<string> DownloadWebsiteContentAsync(string url)
    {
        using (HttpClient client = new HttpClient())
        {
            string content = await client.GetStringAsync(url);
            return content;
        }
    }

    static async Task<int> ComputeValueAsync()
    {
        await Task.Delay(2000); // This simulates some async operation
        return 42; // Just a sample value
    }
}
  1. DownloadWebsiteContentAsync 메서드는 주어진 URL의 내용을 비동기적으로 다운로드하여 문자열로 반환합니다.
  2. ComputeValueAsync 메서드는 비동기 작업을 시뮬레이션하기 위해 2초 동안 대기한 후 숫자 42를 반환합니다.
  3. Main 메서드에서 두 개의 비동기 메서드를 호출하며, await 키워드를 사용하여 비동기 작업의 완료를 기다립니다.

이 코드를 실행하면, "Start downloading..." 메시지가 출력된 후, 비동기적으로 웹사이트의 내용을 다운로드하고, 그 다음에 "Download complete!" 메시지가 출력됩니다.

 

 

 

 

 

 

'워크 > C# 5.0' 카테고리의 다른 글

Windows Runtime (WinRT) 지원  (0) 2023.08.30
Filtered Exception Handling  (0) 2023.08.29
향상된 for 루프와 foreach 루프  (0) 2023.08.28
Caller Information Attributes  (0) 2023.08.28
C# 5.0의 주요 특징  (0) 2023.08.28