다음을 통해 공유


방법: 비동기적으로 웹 서비스 호출(Visual Basic)

이 예제에서는 비동기 메서드 호출의 결과를 검색할 수 있도록 웹 서비스의 비동기 처리기 이벤트에 처리기를 연결합니다. 이 예제에서는 http://www.xmethods. net을 입력합니다.

Visual Studio IDE(통합 개발 환경)에서 프로젝트의 웹 서비스를 참조하면 해당 웹 서비스가 My.WebServices 개체에 추가되고 IDE에서는 지정된 웹 서비스에 액세스할 클라이언트 프록시 클래스가 생성됩니다.

프록시 클래스를 사용하면 웹 서비스 메서드를 비동기적으로 호출할 수 있습니다. 즉, 응용 프로그램이 함수가 완료될 때까지 대기합니다. 또한 프록시는 메서드를 비동기적으로 호출하는 데 도움이 되는 추가 멤버를 만듭니다. 각 웹 서비스 함수인 NameOfWebServiceFunction의 경우 프록시는 NameOfWebServiceFunctionAsync 서브루틴, NameOfWebServiceFunctionCompleted 이벤트 및 NameOfWebServiceFunctionCompletedEventArgs 클래스를 만듭니다. 이 예제에서는 비동기 멤버를 사용하여 DemoTemperatureService 웹 서비스의 getTemp 함수에 액세스하는 방법을 보여 줍니다.

참고

ASP.NET은 My.WebServices 개체를 지원하지 않으므로 웹 응용 프로그램에서는 이 코드가 작동하지 않습니다.

웹 서비스를 비동기적으로 호출하려면

  1. http://www.xmethods. net을 입력합니다. 주소는 다음과 같습니다.

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. getTempCompleted 이벤트에 대한 이벤트 처리기를 추가합니다.

    Private Sub getTempCompletedHandler(ByVal sender As Object, 
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    

    참고

    이벤트 처리기를 My.WebServices 개체의 이벤트에 연결할 때는 Handles 문을 사용할 수 없습니다.

  3. 이벤트 처리기가 getTempCompleted 이벤트에 추가되었는지를 추적하기 위한 필드를 추가합니다.

    Private handlerAttached As Boolean = False
    
  4. getTempCompleted 이벤트에 이벤트 처리기를 추가하고 필요한 경우 getTempAsynch 메서드를 호출하기 위한 메서드를 추가합니다.

    Sub CallGetTempAsync(ByVal zipCode As Integer)
        If Not handlerAttached Then
            AddHandler My.WebServices.
                TemperatureService.getTempCompleted, 
                AddressOf Me.TS_getTempCompleted
            handlerAttached = True
        End If
        My.WebServices.TemperatureService.getTempAsync(zipCode)
    End Sub
    

    getTemp 웹 메서드를 비동기적으로 호출하려면 CallGetTempAsync 메서드를 호출합니다. 웹 메서드가 종료되면 반환 값이 getTempCompletedHandler 이벤트 처리기에 전달됩니다.

참고 항목

참조

My.WebServices 개체(Visual Basic)

개념

응용 프로그램 웹 서비스 액세스(Visual Basic)