.NET은 비동기 작업을 수행하기 위한 세 가지 패턴을 제공합니다.
단일 메서드를 사용하여 비동기 작업의 시작 및 완료를 나타내는 TAP(작업 기반 비동기 패턴)입니다. TAP은 .NET Framework 4에서 도입되었습니다. .NET에서 비동기 프로그래밍에 권장되는 방법입니다. C# 의 비동기 및 await 키워드와 Visual Basic의 Async 및 Await 연산자는 TAP에 대한 언어 지원을 추가합니다. 자세한 내용은 TAP(작업 기반 비동기 패턴)을 참조하세요.
비동기 동작을 제공하기 위한 이벤트 기반 레거시 모델인 EAP(이벤트 기반 비동기 패턴)입니다. 접미사와 하나 이상의 이벤트, 이벤트 처리기 대리자 형식 및
Async
파생 형식이 있는 메서드EventArg
가 필요합니다. EAP는 .NET Framework 2.0에서 도입되었습니다. 새 개발에는 더 이상 권장되지 않습니다. 자세한 내용은 EAP(이벤트 기반 비동기 패턴)를 참조하세요.APM(비동기 프로그래밍 모델) 패턴(패턴이라고도 함 IAsyncResult )은 인터페이스를 사용하여 IAsyncResult 비동기 동작을 제공하는 레거시 모델입니다. 이 패턴에서는 비동기 작업에 메서드
Begin
및 메서드End
가 필요합니다(예를 들어, 비동기 쓰기 작업을 구현하려면BeginWrite
및EndWrite
메서드가 필요합니다). 이 패턴은 더 이상 새 개발에 권장되지 않습니다. 자세한 내용은 APM(비동기 프로그래밍 모델)을 참조하세요.
패턴 비교
세 패턴이 비동기 작업을 모델링하는 방법을 빠르게 비교하려면 지정된 양의 데이터를 지정된 오프셋에서 시작하는 제공된 버퍼로 읽는 메서드를 고려 Read
합니다.
public class MyClass
{
public int Read(byte [] buffer, int offset, int count);
}
이 메서드의 TAP 대응 메서드는 다음 단일 ReadAsync
메서드를 노출합니다.
public class MyClass
{
public Task<int> ReadAsync(byte [] buffer, int offset, int count);
}
EAP 대응 항목은 다음과 같은 형식 및 멤버 집합을 노출합니다.
public class MyClass
{
public void ReadAsync(byte [] buffer, int offset, int count);
public event ReadCompletedEventHandler ReadCompleted;
}
APM 대응 항목은 BeginRead
및 EndRead
메서드를 제공합니다.
public class MyClass
{
public IAsyncResult BeginRead(
byte [] buffer, int offset, int count,
AsyncCallback callback, object state);
public int EndRead(IAsyncResult asyncResult);
}
참고하십시오
.NET