WebClient.DownloadFile()을 사용하여 시간 초과 처리
파일 다운로드에 WebClient.DownloadFile()
을 사용하면 네트워크 문제나 액세스할 수 없는 리소스로 인해 무기한 지연이 발생할 수 있는 경우가 있습니다. 이를 방지하려면 시간 초과 메커니즘을 구현하는 것이 중요합니다.
사용자 정의 WebClient 클래스 생성
해결책은 WebClient
에서 상속되는 사용자 정의 클래스를 생성하여 기본 WebRequest
에 대한 시간 초과 값을 설정할 수 있도록 하는 것입니다. 방법은 다음과 같습니다.
<code class="language-csharp">using System; using System.Net; public class TimedWebClient : WebClient { public int TimeoutMilliseconds { get; set; } public TimedWebClient() : this(60000) { } // Default timeout: 60 seconds public TimedWebClient(int timeoutMilliseconds) { TimeoutMilliseconds = timeoutMilliseconds; } protected override WebRequest GetWebRequest(Uri address) { var request = base.GetWebRequest(address); if (request != null) { request.Timeout = TimeoutMilliseconds; } return request; } }</code>
사용자 정의 클래스 사용
이 사용자 정의 TimedWebClient
는 표준 WebClient
과 동일하게 사용할 수 있습니다.
<code class="language-csharp">// Set a 30-second timeout var timedClient = new TimedWebClient(30000); // Download the file timedClient.DownloadFile("http://example.com/file.zip", "localfile.zip");</code>
이 접근 방식을 사용하면 지정된 시간 초과 후에 파일 다운로드가 종료되어 네트워크 또는 액세스 문제로 인해 애플리케이션이 무기한 중단되는 것을 방지할 수 있습니다. 시간 초과는 밀리초 단위로 설정됩니다.
위 내용은 무기한 대기를 방지하기 위해 WebClient.DownloadFile()에서 시간 초과를 구현하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!