2012-12-18 2 views
0

LastFMSharp를 사용하여 WP8에 RestSharp이라는 프로그램을 작성하고 있지만 그 방법을 WP 이후로 ExecuteAsync으로 업데이트해야합니다. 이 문제점은 이전처럼 Execute (요청)가 RestResponse를 리턴 한 곳에서 ExecuteAsync가 RestRequestAsyncHandle을 리턴한다는 것입니다. 내 메서드에 대한 RestResponse가 필요합니다. 어떻게 var 응답으로 가져 가야합니까? 구조는 다음과 같습니다.C# 및 Windows Phone 7 (RestSharp 사용)의 작업/위임자

RestSharp.RestClient.ExecuteAsync<T>(RestSharp.IRestRequest,System.Action<RestSharp.IRestResponse<T>,RestSharp.RestRequestAsyncHandle>) 

감사합니다.

원본을 :

public RestResponse<T> Execute<T>(RestRequest request) where T : new() 
{ 
    request.AddParameter("api_key", _apiKey); 

    var response = _restClient.Execute<T>(request); 
    RequestCount++; 
    DataCount += response.RawBytes.Length; 
    return response; 
} 

이 변경 이 (있어야하는데 어떤 콜백 확실하지 작동하지 않습니다)를 :

public RestResponse<T> Execute<T>(RestRequest request) where T : new() 
{ 
     request.AddParameter("api_key", _apiKey); 

     //var response = 
     _restClient.ExecuteAsync(request, response => 
         { 
          callback(response.Content); 
         }); 

     RequestCount++; 
     DataCount += response.RawBytes.Length; 
     return response; 
} 

콜백 응답을 초기화? 어떻게해야합니까?

답변

1

응답이 콜백이 호출 될 시점까지 미래의 일정 시점까지는 발생하지 않을 수 없습니다.

Windows Phone 8이므로 async\await pattern을 사용해보십시오.

+0

특히,'TaskCompletionSource '을 사용하면'ExecuteAsync'와 그 콜백을'Task '을 반환하는 메소드로 래핑 할 수 있습니다. –

+0

문제가 생기면 고맙습니다. 나는 비동기를 사용하여 함의가 나에게 타격을 가하지 않았다고 생각한다. – Dreken105