【问题标题】:Actions/Delegates in C# and Windows Phone 7 (using RestSharp)C# 和 Windows Phone 7 中的操作/委托(使用 RestSharp)
【发布时间】:2012-12-18 21:43:09
【问题描述】:

我正在 WP8 上使用 RestSharp 编写程序,确切地说是 LastFMSharp,但我必须将方法更新为 ExecuteAsync,因为它是 WP。这样做的问题是,在 Execute(request) 返回一个 RestResponse 之前,ExecuteAsync 返回一个 RestRequestAsyncHandle。我的方法需要 RestResponse。那么如何将其放入 var 响应中呢?请记住,结构是

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;
}

回调初始化响应?我该怎么做呢?

【问题讨论】:

    标签: windows-phone-8 restsharp


    【解决方案1】:

    你不能因为响应直到将来某个时间才会发生,此时回调将被调用。

    由于这是 Windows Phone 8,请尝试使用 async\await pattern

    【讨论】:

    • 特别是,您可以使用TaskCompletionSource&lt;RestResponse&lt;T&gt;&gt;ExecuteAsync 及其回调包装成一个返回Task&lt;RestResponse&lt;T&gt;&gt; 的方法。
    • 好的,谢谢大家,如果我遇到问题,我会回复。我想使用 async 的影响并没有影响到我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多