Page 6 -
P. 6
5.6 비동기 메서드의 흐름 249
5.6.1 무엇을 언제까지 대기하는가? 250
5.6.2 대기 표현식의 평가 252
5.6.3 대기 가능 패턴 멤버의 이용 256
5.6.4 예외 뜯어보기 257
5.6.5 메서드 완료 260
5.7 비동기 익명 함수 265
5.8 C# 7에 도입된 사용자 정의 태스크 타입 267
5.8.1 99.9%의 사용 예: ValueTask<TResult> 267
5.8.2 나머지 0.1%의 사용 예: 사용자 정의 태스크 타입 작성 270
5.9 C# 7.1에서 지원하는 비동기 Main 메서드 273
5.10 활용 팁 274
5.10.1 ConfigureAwait로 컨텍스트를 저장하는 것을 피하라 275
5.10.2 여러 작업이 독립적으로 수행될 수 있도록 작성하고 이를 병렬적으로 수행하라 277
5.10.3 동기 코드와 비동기 코드를 섞어 쓰지 마라 278
5.10.4 취소가 가능하도록 코드를 작성하라 279
5.10.5 비동기성을 테스트하라 279
5.11 요약 281
6장 비동기 구현 283
6.1 컴파일러가 생성한 코드의 구조 285
6.1.1 스텁 메서드: 사전 준비와 첫걸음 떼기 289
6.1.2 상태 머신의 구조 291
6.1.3 MoveNext( ) 메서드(고수준) 295
6.1.4 SetStateMachine 메서드와 상태 머신 박싱의 조화 296
6.2 MoveNext( )의 간단한 구현 298
6.2.1 구체적인 예 298
6.2.2 MoveNext( ) 메서드의 일반적인 구조 300
6.2.3 대기 표현식에 대한 고찰 303