2013-08-02 23 views
7

Có thể hủy HttpClient GET web request in Windows 8. Tôi đang tìm một giải pháp để hủy yêu cầu web của tôi nếu người dùng nhấn phím trở lại từ trang. Trong ứng dụng của tôi, tôi đang sử dụng static class để tạo yêu cầu web.Làm thế nào để hủy bỏ HttpClient GET yêu cầu web

Tôi đang sử dụng MVVM Lightstatic viewmodels bên trong ứng dụng.

Trong trường hợp hiện tại, ngay cả khi người dùng nhấn nút quay lại, số vm vẫn hoạt động và cuộc gọi trở lại tiếp cận và thực hiện trong VM.

Vì vậy, tôi đang tìm kiếm giải pháp để hủy yêu cầu trên báo chí trở lại.

+0

Bạn có thể sử dụng CancellationToken cho hủy phương pháp async. Đó là một cách để làm điều đó, có thể là những người khác. – VasileF

+0

Bạn có thể thêm cách hủy yêu cầu bằng CancelationToken, làm câu trả lời hay không. Sau đó, tôi sẽ đánh dấu nó là câu trả lời –

Trả lời

5

Hãy thử điều này

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

Xin lưu ý rằng mọi thứ trong thời gian chạy Windows 8.1 đã thay đổi "chỉ một chút" - [yêu cầu hủy máy khách http trong windows 8.1] (http://stackoverflow.com/questions/23457797/http- client-cancel-request-in-windows-8-1), vì vậy câu trả lời chính xác chỉ dành cho thời gian chạy trong windows 8.0. – Sevenate

+0

OP cũng chỉ yêu cầu W8. Xem các thẻ của câu hỏi. – Xyroid

+1

Tôi đã nhìn thấy các thẻ chắc chắn và câu trả lời của bạn hoàn toàn tốt cho Windows 8. Chỉ cần thêm nhận xét cho những người thích tôi có thể tìm thông tin tương tự cho Windows mới nhất (cho đến nay) và trỏ chúng đến địa điểm thích hợp. – Sevenate

Các vấn đề liên quan