2013-08-02 1 views
7

은 가능한 내 웹 요청을 취소 할 수있는 솔루션을 찾고 HttpClient GET web request in Windows 8.을 취소하는 것입니다 페이지에서 사용자를 눌러 다시 키 경우. 내 애플 리케이션에서 나는 웹 요청을 만들기 위해 static class을 사용하고있다.취소하는 방법 HttpClient를 GET 웹 요청

ALOS 내가 MVVM Light, 앱 내부 static viewmodels을 사용하고 있습니다.

현재 사용자가 뒤로 버튼을 눌러도 vm이 살아 있고 콜백이 VM에 도달하여 실행됩니다.

그래서 나는 다시 눌러의 요청을 취소 할 수있는 솔루션을 찾고 있어요.

+0

당신은 비동기 방법을 취소하는 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

주의 사항으로 그 때 나는 Windows 용 8.1 런타임 일들이 "조금"비트를 변경 한 것을, 그것을 표시합니다 - (http://stackoverflow.com/questions/23457797/http- [클라이언트 창에서 요청을 8.1 취소 HTTP] client-cancel-request-in-windows-8-1), 정확한 응답은 Windows 8.0의 런타임에만 정확합니다. – Sevenate

+0

OP도 W8 만 요청했습니다. 질문 태그를 참조하십시오. – Xyroid

+1

나는 확실히 태그를 본 적이과 당신의 대답은 나를 최신 (지금까지) Windows 용 유사한 정보를보고 적절한 장소에 지점이 비슷한 윈도우 8 사람들을 위해 그냥 추가 코멘트, 완벽 괜찮습니다. – Sevenate

관련 문제