방법: 관리 코드의 웹 서비스 비동기 액세스
업데이트: 2007년 11월
웹 서비스 프록시 클래스의 모든 웹 메서드에는 이에 상응하는 비동기 항목이 있습니다. 프록시 클래스는 비동기 메서드와 모든 웹 메서드에 상응하는 이벤트를 자동으로 생성합니다. 비동기 메서드를 호출하면 이 메서드가 다른 스레드에서 실행되고 이를 반환할 때 상응하는 이벤트가 발생합니다. 상응하는 이벤트에 대한 처리기를 만들어 비동기 메서드를 반환할 때 코드를 실행할 수 있습니다.
Visual Basic을 사용하여 웹 메서드를 비동기적으로 호출하려면
다음과 같이 WithEvents 키워드를 사용하여 웹 서비스 프록시 클래스의 인스턴스를 선언합니다.
Dim WithEvents myWebService As New Service1
참고: 웹 서비스에 대한 웹 참조가 프로젝트에 포함되어 있어야 합니다.
호출하려는 메서드에 상응하는 MethodCompleted 이벤트에 대한 이벤트 처리기를 코드 편집기에서 Handles 키워드를 사용하여 만듭니다. 예를 들어, HelloWorld라는 메서드를 비동기적으로 호출하려면 다음과 같은 메서드를 만듭니다.
Private Sub HelloWorldComplete(ByVal sender As Object, _ ByVal completed As localhost.HellowWorldCompletedEventArgs) _ Handles myWebService.HelloWorldCompleted ' Insert code to implement the method here End Sub
MethodCompleted 이벤트를 처리하는 메서드는 이벤트의 시그니처와 일치해야 합니다. 여기에는 일반적으로 웹 서비스 프록시 클래스와 동일한 네임스페이스에 있는 메서드의 EventArgs에 대한 인스턴스와 송신자를 나타내는 Object 인수가 필요합니다. 코드 편집기를 사용하여 이벤트 처리기를 자동으로 만들 수도 있습니다. 자세한 내용은 방법: Visual Basic 코드 편집기로 이벤트 처리기 만들기를 참조하십시오.
메서드의 MethodAsync 폼을 사용하여 웹 메서드를 호출합니다. 예를 들어, HelloWorld라는 웹 메서드를 비동기적으로 호출하는 경우 코드는 다음과 같습니다.
HelloWorldAsync
메서드의 반환 값은 EventArgs의 결과 속성에서 사용할 수 있습니다.
C#을 사용하여 웹 메서드를 비동기적으로 호출하려면
다음과 같이 웹 서비스 프록시 클래스의 인스턴스를 선언합니다.
private localhost.Service1 myWebService = new localhost.Service1 ();
참고: 웹 서비스에 대한 웹 참조가 프로젝트에 포함되어 있어야 합니다.
호출하려는 메서드에 상응하는 MethodCompleted 이벤트에 대한 이벤트 처리기를 코드 편집기에서 추가합니다. 예를 들어, HelloWorld라는 메서드를 비동기적으로 호출하려면 다음과 같은 메서드를 만듭니다.
private void HelloWorldCompleted(Object sender, localhost.HelloWorldCompletedEventArgs Completed) { // Insert code to implement the method here }
MethodCompleted 이벤트를 처리하는 메서드는 이벤트의 시그니처와 일치해야 합니다. 여기에는 일반적으로 웹 서비스 프록시 클래스와 동일한 네임스페이스에 있는 메서드의 EventArgs에 대한 인스턴스와 송신자를 나타내는 Object 인수가 필요합니다. 코드 편집기를 사용하여 이벤트 처리기를 자동으로 만들 수도 있습니다. 자세한 내용은 방법: 이벤트 구독 및 구독 취소(C# 프로그래밍 가이드)를 참조하십시오.
클래스의 생성자에서 다음과 같이 해당 이벤트의 처리기 목록에 MethodCompleted 이벤트 처리기를 추가합니다.
private void Form1_Load(object sender, EventArgs e) { myWebService.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(HelloWorldCompleted); }
메서드의 MethodAsync 폼을 사용하여 웹 메서드를 호출합니다. 예를 들어, HelloWorld라는 웹 메서드를 비동기적으로 호출하는 경우 코드는 다음과 같습니다.
HelloWorldAsync();
메서드의 반환 값은 EventArgs의 결과 속성에서 사용할 수 있습니다.