<..> .NET 비동기 프로그래밍 : 비동기/대기 및 배경 작업자
.NET 4.5 및 C# 5 프레임 워크는 최신 비동기/대기 비동기 프로그래밍 모드를 소개했습니다. 둘 다 장기 작업 작업을 처리하는 데 사용되지만 해당 역할과 해당 장면을 이해하는 것이 필수적입니다.
Async/Await
> Async/Await은 비동기 구문 설탕으로, 개발자는 동기식으로 비동기 동작을 표현하여 코드의 가독성과 유지 보수를 단순화 할 수 있습니다. 장기 작업 기간 동안 사용자 인터페이스의 응답 능력을 유지하기 위해 UI 스레드를 차단하지 않고 Async/Await 함수를 실행할 수 있습니다.
예를 들어, 네트워크 요청 :
배경 worker
배경 작업자 구성 요소는 UI의 응답 능력을 보장하기 위해 스레드 풀 스레드에서 CEO를 실행하는 작업을 실행하는 데 사용됩니다. 일정 보고서 및 완료 기능을 제공하여 개발자가 작업 실행 프로세스 중에 UI를 업데이트 할 수 있습니다.
배경 작업자 관리 스레드의 생성 및 실행이지만 Async/Await의 더 간단한 구문과 비교하여 추가 복잡성을 도입했습니다.
일반적인 응용 프로그램 시나리오
Async/Await :
비동기 I/O 작동
웹 서비스 호출
이벤트 프로그래밍
UI 응답 능력이 필요한 모든 장면
배경 작업자 :
단일 장기 조작 작업
진행 보고서의 과제
수동 관리 스레드의 장면
using (WebResponse response = await webReq.GetResponseAsync())
{
using (Stream responseStream = response.GetResponseStream())
{
int bytesRead = await responseStream.ReadAsync(buffer, 0, buffer.Length);
}
}
로그인 후 복사
비교 장점
Async/Await :
간단하고 쉬운 -읽기 문법
UI 응답 능력을 유지하십시오
단순화 된 이벤트 처리
배경 worker :
진행 보고서 제공
수동 스레드 관리를 제공
지원 비동기 콜백을 지원합니다
올바른 도구를 선택하십시오
Async/Await 및 BackgroundWorker의 선택은 작업의 특정 요구에 따라 다릅니다.
> Async/Await은 비동기 동작 및 UI 응답 기능이 필요한 장면의 첫 번째 선택입니다.
진행 보고서 및 수동 스레드 제어가 중요 할 때, BackgroundWorker는 여전히 실현 가능한 선택입니다.
위 내용은 Async/Await vs. Backag의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!