2013-10-23 3 views

답변

14

당신은 시간 제한이있는 CancellationTokenSource를 사용할 수있는 시간 제한 옵션을 구현할 수 있습니다.

 HttpClient client = new HttpClient(); 
     var cancellationTokenSource = new CancellationTokenSource(2000); //timeout 
     try 
     { 
      var response = await client.GetAsync("https://test.example.com", cancellationTokenSource.Token); 
     } 
     catch (TaskCanceledException ex) 
     { 

     } 

편집 : 당신이 AsTask() 확장 메서드를 사용해야합니다 Windows.Web.Http.HttpClient와 :

HttpClient client = new HttpClient(); 
System.Threading.CancellationTokenSource source = new System.Threading.CancellationTokenSource(2000); 
try 
{ 
    client.GetAsync(new Uri("http://example.com")).AsTask(source.Token); 
} 
catch(TaskCanceledException ex) 
{ 

} 
+0

내 실수는, 위의 샘플은 System.Net.Http.HttpClient를 사용하여 작성 . Windows.Web.HttpClient를 고수해야하는 경우 http://msdn.microsoft.com/en-us/library/windows/apps/windows.web.http.filters.aspx –

+0

을 참조하십시오. "Windows.Web.Http.HttpClient"CancellationTokenSource에서 동일한 구현을 사용할 수 있습니다. –

+0

정말요? 원인 GetAsync는 HttpCompletionOption을 사용합니다. 나는 토큰을 통과 할 수 없다. – Naning