2013-08-02 23 views
7

キャンセルすることができますHttpClient GET web request in Windows 8.ユーザーがページから戻るキーを押した場合、Webリクエストをキャンセルするソリューションを探しています。私のアプリでは、Webリクエストの作成にstatic classを使用しています。HttpClient GET Webリクエストをキャンセルする方法

私はMVVM Lightstatic viewmodelsをアプリ内で使用しています。

現在、ユーザが戻るボタンを押してもvmが生き続けるので、​​にコールバックに達して実行されます。

私はバックプレスでリクエストをキャンセルするソリューションを探しています。

+0

を試してみてください。それはそれを行う方法であり、他人である可能性があります。 – VasileF

+0

CancelationTokenでリクエストをキャンセルする方法を回答として追加できますか?それから私は答えとしてそれをマークします –

答えて

5

あなたは非同期メソッドをキャンセルするCancellationTokenを使用することができ、この

protected async override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    await HttpGetRequest(); 
} 

public CancellationTokenSource cts = new CancellationTokenSource(); 
private async Task HttpGetRequest() 
{ 
    try 
    { 
     DateTime now = DateTime.Now; 
     var httpClient = new HttpClient(); 
     var message = new HttpRequestMessage(HttpMethod.Get, "https://itunes.apple.com/us/rss/toppaidapplications/limit=400/genre=6000/json"); 
     var response = await httpClient.SendAsync(message, cts.Token); 
     System.Diagnostics.Debug.WriteLine("HTTP Get request completed. Time taken : " + (DateTime.Now - now).TotalSeconds + " seconds."); 
    } 
    catch (TaskCanceledException) 
    { 
     System.Diagnostics.Debug.WriteLine("HTTP Get request canceled."); 
    } 
} 

private void btnCancel_Click(object sender, RoutedEventArgs e) 
{ 
    cts.Cancel(); 
} 
+0

Windows 8.1のランタイムのものは "ほんの少し"のビットが変更されていることに注意してください - [httpクライアントは、Windows 8.1でキャンセル要求](http://stackoverflow.com/questions/23457797/http- client-cancel-request-in-windows-8-1)ので、正しい答えはWindows 8.0の実行時にのみ正確です。 – Sevenate

+0

OPはまたW8のみを求めています。質問のタグを参照してください。 – Xyroid

+1

私は確かにタグを見てきましたが、あなたの答えはWindows 8の場合はまったく問題ありません。最新の(これまでの)Windowsのような情報を見て適切な場所を指している人のためのコメントを追加しました。 – Sevenate

関連する問題