느린 서버에서 대용량 파일을 다운로드하면 .NET WebClient
개체를 사용할 때 시간 초과 오류가 자주 발생합니다. 이 문서에서는 제한 시간을 연장하는 솔루션을 살펴보거나 대규모 데이터 세트를 검색하기 위한 대체 방법을 제안합니다.
WebClient
의 기본 시간 초과 설정은 느린 네트워크 연결에 충분하지 않은 경우가 많습니다. 이를 늘리기 위해 WebClient
메서드를 재정의하고 더 긴 시간 초과 기간을 설정하는 사용자 정의 GetWebRequest
클래스를 만들 수 있습니다.
다음 코드 조각은 시간 초과를 20분으로 연장하는 방법을 보여줍니다.
<code class="language-csharp">private class MyWebClient : WebClient { protected override WebRequest GetWebRequest(Uri uri) { WebRequest w = base.GetWebRequest(uri); w.Timeout = 20 * 60 * 1000; // 20 minutes in milliseconds return w; } }</code>
이 사용자 정의 MyWebClient
클래스를 활용하면 시간 초과 예외가 발생하지 않고 다운로드를 진행할 수 있습니다.
시간 초과를 연장하는 것이 유익하지만 진정한 "무한" 시간 초과는 WebClient
에서 직접 지원되지 않습니다. 다음은 몇 가지 효과적인 대안입니다.
BackgroundWorker 사용: BackgroundWorker
클래스가 상속되고 해당 DoWork
메서드가 재정의되면 WebClient
시간 초과 제한을 우회하여 별도의 스레드 내에서 다운로드가 가능해집니다.
에 대한 보다 현대적이고 강력한 대안인 HttpClient:HttpClient
WebClient
활용은 사용자 정의된 시간 초과 설정을 위한 Timeout
속성을 제공합니다.
Async/Await 활용: async
/await
을 사용한 비동기 프로그래밍은 메인 스레드를 차단하지 않고 다운로드와 같은 장기 실행 작업을 용이하게 합니다. 이 접근 방식은 스레드 안전이 주요 관심사가 아닐 때 적합합니다.
위 내용은 .NET WebClient를 사용하여 대용량 파일 다운로드에 대한 시간 초과 설정을 어떻게 사용자 정의할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!