2016-11-17 2 views
0

웹 서비스를 호출해야 웹 참조를 웹 참조로 추가하고 호출 할 수 있습니다. 이제는 많은 양의 데이터를 다운로드해야하기 때문에 비동기 호출을해야하고 많은 시간이 걸립니다. async/await 메서드를 사용하려고했지만 웹 서비스의 메서드가 비동기 적이기 때문에이 작업을 수행 할 수 없습니다.webservice를 비동기 적으로 호출하십시오.

원래 코드 :

public static void validateLogin(JsonParameters _param, ref ValidateCredentials result, ref string excep_error) 
    { 
     var _mobileService = new MobileService(); 
     _mobileService.Url = AppParam.IISSTRING + "/UrlAddressReference"; 
     try 
     { 
      result = _mobileService.downloaddata(_param); 
     } 
     catch (Exception ex) 
     { 
      excep_error = ex.Message; 
     } 

    } 

내가 방법 비동기을 할 빈의 자리에 비동기 작업을 추가하려고하지만 어떻게 내가 웹 서비스 응답을 기다리고 있습니다?

webservice를 웹 참조로 추가 한 후에 비동기 메소드와 완료된 이벤트를 각 메소드에 대해 작성한 것을 볼 수 있습니다. 어떻게 그들을 사용할 수 있습니까? (예 : downloaddata", a method name downloaddataasync` 및 이벤트 "downloaddatacompleted")

이 작업을 수행 할 수있는 방법이 있습니까? 아니면 웹 서비스를 변경해야합니까? 등 public static async Task validateLoginAsync(...) validateLogin 변경해야 호출하는 방법, 그것을 호출 하나에 월

을 validateLogin을 변경하면 비동기를 사용하려면

+1

'MobileService.downloaddata' 호출의 구현은 어디에서 시작해야 할 것인가에 달려 있습니다. –

답변

0
public async static Task validateLogin(JsonParameters _param, ref ValidateCredentials result, ref string excep_error) 
     { 
      await Task.Run(()=> 
      { 
      var _mobileService = new MobileService(); 
      _mobileService.Url = AppParam.IISSTRING + "/UrlAddressReference"; 
      try 
      { 
       result = _mobileService.downloaddata(_param); 
      } 
      catch (Exception ex) 
      { 
       excep_error = ex.Message; 
      } 
     }); 
} 
+0

아래 투표가 구체적으로 무엇인지 궁금합니다 ... –

+0

나는이 방법을 사용해 주셔서 감사합니다. –

+0

감사합니다. –

0

은/await를 올바른 접근 방식은 제안이다 AsyncContext 또는 NotifyTaskCompletion을 신전 (https://github.com/StephenCleary/AsyncEx/wiki/AsyncContext)으로 사용할 수 있지만 여전히 BackgroundWorker 또는 이와 유사한 구조를 사용해야 할 수도 있습니다. 제가 그것이 각 메소드 비동기 방법 및 종료 이벤트를 만들어 볼 수있는 웹 기준으로 웹 서비스를 첨가 한 후

관련 문제