개발 비동기 메소드 호출이란 무엇입니까? -techopedia에서 정의

비동기 메소드 호출이란 무엇입니까? -techopedia에서 정의

차례:

Anonim

정의-비동기 메서드 호출이란 무엇입니까?

비동기 메서드 호출은 .NET 프로그래밍에 사용되는 메서드로, 처리가 완료되기 직전에 호출 스레드를 차단하지 않고 호출자에게 반환합니다.


응용 프로그램이 비동기 메서드를 호출하면 작업을 수행하는 비동기 메서드의 실행과 동시에 실행될 수 있습니다. 비동기 메소드는 기본 애플리케이션 스레드와 별도의 스레드에서 실행됩니다. 처리 결과는 다른 스레드에서 다른 호출을 통해 페치됩니다.


비동기 메서드는 리소스 실행을 최적화하여 확장 가능한 응용 프로그램을 만듭니다. 대용량 파일 열기, 원격 컴퓨터 연결, 데이터베이스 쿼리, 웹 서비스 호출 및 ASP.NET 웹 양식과 같은 시간이 많이 걸리는 작업을 실행하는 데 사용됩니다.


비동기 메서드 호출은 AMI (비동기 메서드 호출)라고도합니다.

Techopedia는 비동기 메소드 호출을 설명합니다

비동기 메서드는 호출에서 반환되는 방식이 동기 메서드와 다릅니다. 비동기 메소드 호출이 즉시 리턴되어 호출 프로그램이 다른 조작을 수행 할 수 있도록하지만 동기 메소드 호출은 프로그램 플로우를 계속하기 전에 메소드가 완료 될 때까지 기다립니다.


.NET 프레임 워크에는 비동기 인프라가 내장되어 있으므로 코드를 변경하지 않고도 모든 메소드를 비동기 적으로 호출 할 수 있습니다.


.NET 프레임 워크는 비동기 메서드 (IASyncResult 개체) 및 이벤트를 사용하는 비동기 메서드를 구현하는 두 가지 디자인 패턴을 제공합니다. 비동기 델리게이트의 패턴은 더 복잡하고 유연성을 제공하므로 다양한 복잡한 프로그래밍 모델에 적합합니다. 이벤트 기반 모델은 단순하며 대부분의 경우 사용해야합니다.


비동기 델리게이트 패턴에서 델리게이트 오브젝트는 BeginInvoke 및 EndInvoke의 두 가지 메소드를 사용합니다. BeginInvoke에는 래핑 된 함수와 유사한 매개 변수 목록과 두 개의 추가 선택적 매개 변수가 있습니다. IAsyncResult 객체를 반환합니다. EndInvoke는 IAsyncResult 객체와 함께 두 개의 매개 변수 (out 및 ref 유형)를 반환합니다. BeginInvoke는 비동기 호출을 시작하는 데 사용되는 반면 EndInvoke는 비동기 호출의 결과를 검색하는 데 사용됩니다.


이벤트 기반 비동기 패턴은 현재 스레드에서 실행되는 해당 동기 버전이있는 MethodNameAsync라는 하나 이상의 메소드가있는 클래스를 사용합니다. 이벤트 기반 패턴에는 MethodNameCompleted 이벤트 및 MethodNameAsyncCancel 메소드도있을 수 있습니다. 이 패턴을 통해 클래스는 델리게이트 이벤트 모델을 사용하여 보류중인 비동기 작업과 통신 할 수 있습니다.


다음은 비동기 메소드와 관련된 몇 가지 팁입니다.

  • 동시성을 높이려면 비동기 메서드를 피해야합니다
  • 공유 객체 참조를 전달하는 동안주의를 기울여야합니다
  • 예외를 다시 발생시키고 실패를 피하려면 EndXXX (비동기 작업의 끝에서 호출 됨)를 호출해야합니다.
  • 비동기 메소드에서 모든 예외 오브젝트를 포착하고 저장하면 EndXXX 호출 중에 다시 예외 항목을 다시 작성할 수 있습니다.
  • 장기 실행 비동기 작업을 시작하는 사용자 인터페이스의 컨트롤은 해당 목적에만 필요한 경우 비활성화해야합니다.
  • 비동기 메소드는 멀티 스레딩을 이해하고 동기 메소드를 사용하는 것보다 더 효율적인 것으로 이해되어 구현되어야합니다.
비동기 메소드 호출이란 무엇입니까? -techopedia에서 정의