비동기 패턴은 사용자 인터페이스의 반응성을 유지하거나 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 |