1

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

私の質問は、これを達成する別の方法はありますか?

私がしていることは大丈夫ですか?

4

0 に答える 0