반응형
webClient.DownloadFile ()에 대한 시간 제한 설정
내가 사용하고 webClient.DownloadFile()
내가 너무 오래는 파일에 액세스 할 수없는 경우 적용되지 않습니다 너무 이것에 대한 시간 제한을 설정할 수 있습니다 파일을 다운로드?
시도해보십시오 WebClient.DownloadFileAsync()
. CancelAsync()
자신의 타임 아웃으로 타이머로 전화를 걸 수 있습니다 .
내 대답은 여기 에서 나온다
기본 WebRequest
클래스 의 시간 제한 속성을 설정하는 파생 클래스를 만들 수 있습니다 .
using System;
using System.Net;
public class WebDownload : WebClient
{
/// <summary>
/// Time in milliseconds
/// </summary>
public int Timeout { get; set; }
public WebDownload() : this(60000) { }
public WebDownload(int timeout)
{
this.Timeout = timeout;
}
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request != null)
{
request.Timeout = this.Timeout;
}
return request;
}
}
기본 WebClient 클래스처럼 사용할 수 있습니다.
WebClient.OpenRead (...) 메서드를 사용하여이 작업을 동 기적으로 수행하고 반환하는 Stream에 시간 제한을 설정하면 원하는 결과를 얻을 수 있습니다.
using (var webClient = new WebClient())
using (var stream = webClient.OpenRead(streamingUri))
{
if (stream != null)
{
stream.ReadTimeout = Timeout.Infinite;
using (var reader = new StreamReader(stream, Encoding.UTF8, false))
{
string line;
while ((line = reader.ReadLine()) != null)
{
if (line != String.Empty)
{
Console.WriteLine("Count {0}", count++);
}
Console.WriteLine(line);
}
}
}
}
WebClient에서 파생되고 GetWebRequest (...)를 재정 의하여 @Beniamin이 제안한 시간 제한을 설정했지만 저에게 효과적이지 않았습니다.
참고URL : https://stackoverflow.com/questions/601861/set-timeout-for-webclient-downloadfile
반응형
'developer tip' 카테고리의 다른 글
es6에서 배열의 마지막 요소를 얻기위한 구조 해제 (0) | 2020.09.04 |
---|---|
Ruby 1.9에서 디버깅 (0) | 2020.09.04 |
여러 필드로 목록 (C #)을 주문 하시겠습니까? (0) | 2020.09.04 |
jQuery로 전화 번호를 포맷하는 방법 (0) | 2020.09.04 |
신속하게 현재 시간에 분을 추가하는 방법 (0) | 2020.09.04 |