async 썸네일형 리스트형 C# 메서드 체이닝(Method Chaining) 패턴 구현 메서드 체이닝은 호출 결과로 자기 자신 또는 동일한 타입을 반환하여 호출을 연속적으로 이어가는 패턴입니다. 가독성이 높고, 구성(config) API를 간결하게 만들며, 빌더(Builder)나 Fluent Interface에 자연스럽게 적용됩니다.1. 언제 메서드 체이닝을 쓰나요?- 옵션이 많은 객체를 구성할 때 빌더 패턴과 함께 사용합니다.- LINQ처럼 읽기 쉬운 파이프라인 스타일 API가 필요할 때 유용합니다.- 설정은 체인으로, 실행은 마지막 단일 메서드(예: Build, Execute, Send)로 분리하는 것이 좋습니다.2. 기본 구현 패턴 (Mutable Builder)가장 단순한 방식은 내부 상태를 변경하고 this를 반환하는 것입니다. 다음 예시는 URL을 조합하는 간단한 빌더입니다.us.. 더보기 C# System.Threading.Channels로 비동기 데이터 파이프라인 구성 비동기 프로그래밍에서 데이터 처리 파이프라인을 구성할 때, System.Threading.Channels는 효율적인 데이터 흐름 제어를 돕습니다. 이 글에서는 채널을 사용해 생산자-소비자 패턴을 구현하는 방법을 소개합니다.1. System.Threading.Channels란?채널은 비동기 큐와 유사한 구조로, 여러 생산자와 소비자가 안전하고 효율적으로 데이터를 교환할 수 있도록 설계되었습니다.2. 기본 사용법먼저 Channel 클래스를 생성하고, 생산자 역할은 데이터를 쓰기, 소비자 역할은 데이터를 읽기로 구현합니다.using System;using System.Threading.Channels;using System.Threading.Tasks;public class Program{ public .. 더보기 C# 반응형 프로그래밍(Rx.NET) 개념과 Observable 활용 Rx.NET은 이벤트와 비동기 데이터를 컬렉션처럼 다루게 해주는 라이브러리입니다. IObservable 시퀀스를 LINQ 스타일로 조합해 유지보수성과 가독성을 높일 수 있습니다. 이 글에서는 핵심 개념과 Observable 활용법을 간략히 소개합니다.1. Rx.NET 한눈에 보기- Push 모델: 데이터가 준비될 때 밀어줍니다(OnNext, OnError, OnCompleted).- LINQ to Events: Select/Where 같은 연산자로 스트림을 변환/필터링합니다.- 비동기/이벤트 통합: 타이머, UI 이벤트, 네트워크 호출을 같은 방식으로 다룹니다.2. Observable/Observer 핵심- IObservable: 데이터 스트림의 생산자입니다.- IObserver: OnNext/OnErr.. 더보기 C# CancellationToken으로 작업 취소 구현하기 CancellationToken은 비동기/병렬 작업을 ‘협조적’으로 취소하기 위한 표준 도구입니다. 토큰을 메서드에 전달하고, 해당 메서드가 수시로 토큰을 확인해 스스로 중단하도록 설계합니다.1. 기본 사용법CancellationTokenSource로 토큰을 만들고 메서드에 전달합니다. 작업 내에서는 ThrowIfCancellationRequested 또는 IsCancellationRequested를 사용해 주기적으로 확인합니다.using System;using System.Threading;using System.Threading.Tasks;static async Task DoWorkAsync(CancellationToken token){ for (int i = 0; i 2. I/O 작업 취소 (.. 더보기 C# Task와 Task<T> 사용법 1. 개념 설명Task는 비동기 작업을 표현하고, Task는 결과 값을 반환하는 비동기 작업입니다. async/await를 사용하면 콜백 없이 비동기 흐름을 동기 코드처럼 읽기 쉽게 작성할 수 있습니다. Task는 스레드 그 자체가 아니라 스케줄러가 실행하는 작업의 약속이며, 완료/예외/취소 상태를 가집니다.2. 코드 예제아래 예제는 Task와 Task를 함께 사용하고, 여러 작업을 Task.WhenAll로 묶어 기다립니다. 콘솔에 진행 상황을 출력해 동작을 확인합니다.using System;using System.Threading.Tasks;static async Task DoWorkAsync(string name, int delayMs){ await Task.Delay(delayMs); C.. 더보기 C# 비동기 프로그래밍 async/await 1. 개념 설명async/await는 비동기 작업을 선언적으로 표현해 I/O 대기 시간을 효율적으로 처리합니다. 메서드를 async로 표시하고 Task/Task를 반환하며, await는 현재 스레드를 차단하지 않고 작업이 완료되면 이어서 실행합니다. 이를 통해 UI 응답성을 유지하고 서버에서 더 많은 동시 요청을 처리할 수 있습니다.2. 코드 예제아래 예제는 웹 페이지 문자열 길이와 인위적 딜레이 작업을 동시에 시작한 뒤 결과를 출력합니다.using System;using System.Net.Http;using System.Threading.Tasks;class Program{ static async Task FetchLengthAsync() { using var client = .. 더보기 이전 1 다음