WebClient Timeout 설정

2013. 9. 7. 11:04Programming/C#

WebClient 클래스를 이용하여 HTTP로 파일을 다운받는 코드 개발 중...

다운로드 timeout을 주고 싶은데 아무리 찾아봐도 WebClient.DownloadFile 함수에는 timeout 파라미터가 보이지 않는다.

다운로드 역시 http를 통해 진행하기 때문에 WebClient의 request에 대한 timeout을 설정하면 된다.

아래는 WebClient의 request를 설정하기 위한 custom class.

 class MyWebClient : WebClient

{

int m_nTimeOut = 0;

public MyWebClient(int timeOut)

{

m_nTimeOut = timeOut * 1000;

}


protected override WebRequest GetWebRequest(Uri address)

{

WebRequest request = base.GetWebRequest(address);

request.Timeout = m_nTimeOut;

return request;

}


초기 Class 생성 시 timeout 값을 넣어서 MyWebClient 생성 후 다운로드 함수를 호출하면 자동적으로 timeout이 적용된다.


MyWebClient wClient = new MyWebClient(1);

wClient.DownloadFile("http://test.txt", "test.txt");