다음을 통해 공유


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

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

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

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

비고

ASP.NET 개체를 지원하지 않으므로 이 코드는 웹 애플리케이션에서 My.WebServices 작동하지 않습니다.

비동기적으로 웹 서비스 호출

  1. DemoTemperatureService 웹 서비스를 http://www.xmethods.net에서 참조합니다. 주소는

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

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

    비고

    Handles 구문을 사용하여 이벤트 처리기를 My.WebServices 개체의 이벤트와 연결할 수 없습니다.

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

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

    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 전달됩니다.

참고하십시오