c# 비동기 예제

비동기 프로그래밍은 CPU 바인딩된 작업에 전혀 이점을 제공하지 않습니다. “대기 중”이 없습니다. ASP.NET 비동기 프로그래밍(AKA 비동기/대기)을 구현하면 시스템이 동일한 하드웨어에서 더 많은 요청을 처리할 수 있으므로 해당 시스템의 처리량(성능이 아님)이 증가합니다. I/O 바인딩된 작업을 캡슐화하여 이 작업을 수행합니다. 비동기는 바이러스처럼 확산되며 일반적으로 좋은 일이지만 응용 프로그램에서 구현을 시작할 위치를 결정할 때 이 점을 염두에 두어야 합니다. 프로그래밍 개념을 이해하기 위한 실용적인 예제부터 시작해 보겠습니다. 이 쉬운 방법으로 비동기를 사용하고 C#의 비동기 프로그래밍에 대한 키워드를 기다릴 수 있습니다. 또한 Method3에 대한 종속성1이 있는 세 번째 메서드가 있으면 await 키워드의 도움으로 Method1이 완료될 때까지 기다립니다. 이 구문의 목표는 명령문 시퀀스처럼 읽지만 외부 리소스 할당 및 작업이 완료될 때 훨씬 더 복잡한 순서로 실행되는 코드를 사용하도록 설정하는 것입니다. 사람들이 비동기 작업을 포함하는 프로세스에 대한 지침을 제공하는 방법과 유사합니다.

이 문서 전체에서 아침 식사를 만드는 지침의 예를 사용하여 비동기 및 await 키워드가 일련의 비동기 명령을 포함하는 코드에 대해 쉽게 추론할 수 있도록 하는 방법을 확인합니다. 아침 식사를 만드는 방법을 설명하기 위해 다음 목록과 같은 지침을 작성합니다. 비동기 프로그래밍은 이 조건에서 매우 유용합니다. 비동기 프로그래밍을 사용 하 여 응용 프로그램 전체 작업의 완료에 의존 하지 않는 다른 작업을 계속할 수 있습니다. void를 반환하는 비동기 메서드는 특정 목적을 가지며 비동기 오류 처리기를 가능하게 하지만 비동기 void 메서드는 서로 다른 오류 처리 의미 체계를 갖습니다. 비동기 작업 또는 비동기 작업 메서드에서 예외가 throw되면 해당 예외가 캡처되어 Task 개체에 직접 배치됩니다. 비동기 void 메서드를 사용하면 Task 개체가 관련되지 않으므로 비동기 void 메서드가 시작될 때 활성 상태였던 SynchronizationContext에서 직접 발생하는 예외가 발생합니다. 자세한 내용은 몇 가지 좋은 예가 있는 다음 MSDN 문서를 읽는 것이 좋습니다. 비동기 프로그래밍이 진정으로 수행하는 것은 동일한 리소스로 동시에 처리할 수 있는 요청의 양을 늘리는 것입니다.

동일한 양의 스레드는 동기 시스템에서보다 비동기 시스템에서 더 많은 동시 요청을 처리할 수 있습니다.