从休眠状态重新提交Web请求

时间:2013-02-24 22:20:26

标签: windows-phone-8 windows-phone webrequest restsharp

我在Windows Phone 8应用程序中使用RestSharp(.NET的REST客户端),但我认为我的问题也适用于使用HttpWebRequest或任何其他运行Web请求的方法。

我正在尝试找到一种方法,以便在应用程序从休眠状态恢复时自动重新提交请求。这只是休眠而不是墓碑状态。

我的想法是创建一个包装器对象,在启动请求之前订阅Deactivated事件,并在收到请求时重新运行请求。 我假设自收到停用事件后,请求失败。

public class RestClientEx
{
    bool wasDeactivated = false;

    public async Task<T> ExecuteTaskAsync<T>(RestClient client, RestRequest request) where T : new()
    {
        var phoneApplicationService = App.Current.ApplicationLifetimeObjects.OfType<PhoneApplicationService>().First();
        phoneApplicationService.Deactivated += phoneApplicationService_Deactivated;
        var t = await client.ExecuteTaskAsync<T>(request);
        if (this.wasDeactivated)
        {
            // resubmit request
            this.wasDeactivated = false;
            t = await this.ExecuteTaskAsync<T>(client, request);
        }
        return t;
    }

    void phoneApplicationService_Deactivated(object sender, DeactivatedEventArgs e)
    {
        (sender as PhoneApplicationService).Deactivated -= phoneApplicationService_Deactivated;
        this.wasDeactivated = true;
    }
}

我的问题是,还有另一种方法可以达到这个目的吗?

我在做什么?

0 个答案:

没有答案