2013-08-02 9 views
7

क्या HttpClient GET web request in Windows 8. रद्द करना संभव है यदि उपयोगकर्ता पृष्ठ से वापस कुंजी दबाता है तो मैं अपने वेब अनुरोध को रद्द करने का समाधान ढूंढ रहा हूं। मेरे ऐप में मैं वेब अनुरोध बनाने के लिए static class का उपयोग कर रहा हूं।HttpClient GET वेब अनुरोध को रद्द करने के लिए कैसे करें

Alos मैं MVVM Light, और static viewmodels ऐप में उपयोग कर रहा हूँ।

वर्तमान स्थिति में, भले ही उपयोगकर्ता प्रेस वापस बटन, vm जिंदा रहने और कॉल वापस पहुँच और VM में निष्पादित करता है।

तो मैं बैक प्रेस पर अनुरोध रद्द करने के लिए एक समाधान की तलाश में हूं।

+0

आप async तरीकों रद्द करने के लिए CancellationToken उपयोग कर सकते हैं की कोशिश करो। यह करने का एक तरीका है, शायद अन्य हो सकता है। – VasileF

+0

क्या आप उत्तर के रूप में CancelationToken के साथ अनुरोध रद्द करने का तरीका जोड़ सकते हैं। तो मैं इसे उत्तर के रूप में चिह्नित करूंगा –

उत्तर

5

इस

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

कृपया ध्यान दें, कि विंडोज 8.1 रनटाइम चीजों के लिए "थोड़ा सा" बिट बदल गया है - [http क्लाइंट विंडोज 8.1 में अनुरोध रद्द करें] (http://stackoverflow.com/questions/23457797/http- क्लाइंट-रद्द-अनुरोध-इन-विंडोज -8-1), इसलिए सही उत्तर केवल विंडोज 8.0 में रनटाइम के लिए सटीक है। – Sevenate

+0

ओपी ने केवल W8 के लिए भी पूछा है। प्रश्न के टैग देखें। – Xyroid

+1

मैंने निश्चित रूप से टैग देखे हैं और आपका उत्तर विंडोज 8 के लिए बिल्कुल ठीक है। बस उन लोगों के लिए टिप्पणी जोड़ा गया है, जो मुझे पसंद करते हैं, नवीनतम (अभी तक) विंडोज के लिए समान जानकारी देख सकते हैं और उन्हें उचित स्थान पर इंगित कर सकते हैं। – Sevenate

संबंधित मुद्दे