방법: 비동기적으로 웹 서비스 호출(Visual Basic)
이 예제에서는 비동기 메서드 호출의 결과를 검색할 수 있도록 웹 서비스의 비동기 처리기 이벤트에 처리기를 연결합니다. 이 예제에서는 http://www.xmethods. net을 입력합니다.
Visual Studio IDE(통합 개발 환경)에서 프로젝트의 웹 서비스를 참조하면 해당 웹 서비스가 My.WebServices 개체에 추가되고 IDE에서는 지정된 웹 서비스에 액세스할 클라이언트 프록시 클래스가 생성됩니다.
프록시 클래스를 사용하면 웹 서비스 메서드를 비동기적으로 호출할 수 있습니다. 즉, 응용 프로그램이 함수가 완료될 때까지 대기합니다. 또한 프록시는 메서드를 비동기적으로 호출하는 데 도움이 되는 추가 멤버를 만듭니다. 각 웹 서비스 함수인 NameOfWebServiceFunction의 경우 프록시는 NameOfWebServiceFunctionAsync 서브루틴, NameOfWebServiceFunctionCompleted 이벤트 및 NameOfWebServiceFunctionCompletedEventArgs 클래스를 만듭니다. 이 예제에서는 비동기 멤버를 사용하여 DemoTemperatureService 웹 서비스의 getTemp 함수에 액세스하는 방법을 보여 줍니다.
참고
ASP.NET은 My.WebServices 개체를 지원하지 않으므로 웹 응용 프로그램에서는 이 코드가 작동하지 않습니다.
웹 서비스를 비동기적으로 호출하려면
http://www.xmethods. net을 입력합니다. 주소는 다음과 같습니다.
http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
getTempCompleted 이벤트에 대한 이벤트 처리기를 추가합니다.
Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
참고
이벤트 처리기를 My.WebServices 개체의 이벤트에 연결할 때는 Handles 문을 사용할 수 없습니다.
이벤트 처리기가 getTempCompleted 이벤트에 추가되었는지를 추적하기 위한 필드를 추가합니다.
Private handlerAttached As Boolean = False
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)