본문 바로가기

워크/C# 5.0

활용 사례: 비동기 패턴 응용

비동기 패턴은 사용자 인터페이스의 반응성을 유지하거나 I/O 바운드 작업, 특히 웹 요청, 파일 I/O, 데이터베이스 쿼리와 같은 작업을 처리할 때 매우 유용합니다. C# 5.0의 async 및 await 키워드를 사용하여 이러한 비동기 작업을 간단하게 수행할 수 있습니다.

활용 사례: 비동기로 웹 사이트의 내용을 다운로드하기

아래의 예제 코드는 HttpClient를 사용하여 여러 웹 사이트의 내용을 비동기적으로 다운로드하는 방법을 보여줍니다:

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

class Program
{
    static async Task Main(string[] args)
    {
        List<string> websites = new List<string>
        {
            "https://www.example.com",
            "https://www.example.org",
            "https://www.example.net"
        };

        foreach (var website in websites)
        {
            string content = await DownloadWebsiteAsync(website);
            Console.WriteLine($"Downloaded content from {website} with length: {content.Length}");
        }

        Console.WriteLine("All websites downloaded.");
    }

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

위의 코드에서는 각 웹사이트의 내용을 순차적으로 다운로드하지만 각 요청은 비동기적으로 처리되므로 메인 스레드는 차단되지 않습니다. 따라서 사용자 인터페이스나 다른 작업을 차단하지 않고도 웹사이트의 내용을 다운로드할 수 있습니다.

또한, 여러 웹사이트의 내용을 동시에 다운로드하려면 Task.WhenAll을 사용하여 모든 작업을 병렬로 수행할 수 있습니다. 이렇게 하면 전체 다운로드 시간을 크게 단축시킬 수 있습니다.

 

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

새로운 라이브러리와 API  (0) 2023.09.02
성능 최적화  (0) 2023.09.01
dynamic 키워드의 향상  (0) 2023.08.31
속성 강화  (0) 2023.08.31
Windows Runtime (WinRT) 지원  (0) 2023.08.30