WebClient.DownloadFile() タイムアウトを効率的に管理する
WebClient.DownloadFile()
メソッドのタイムアウトを設定することは、ファイルのダウンロード時の長時間の遅延を防ぐために重要です。この記事では、この操作のタイムアウトを設定するための効率的なソリューションを検討します。
基本クラス WebDownload
を継承する WebClient
という派生クラスを作成します。カスタム クラスには Timeout
属性が導入され、必要なタイムアウト値を設定できるようになります。
WebDownload
クラスの C# コードは次のとおりです:
<code class="language-csharp">using System; using System.Net; public class WebDownload : WebClient { public int Timeout { get; set; } public WebDownload() : this(60000) { } public WebDownload(int timeout) { this.Timeout = timeout; } protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request != null) { request.Timeout = this.Timeout; } return request; } }</code>
GetWebRequest
メソッドをオーバーライドすることで、WebRequest
オブジェクトをインターセプトし、カスタム クラスで指定されたタイムアウト値に基づいてその Timeout
プロパティを変更できます。 WebDownload
クラスを使用する場合、初期化中にタイムアウト期間をミリ秒単位で指定するだけで済みます。
例:
<code class="language-csharp">WebDownload client = new WebDownload(30000); // 设置 30 秒超时 client.DownloadFile("http://example.com/file.zip", "file.zip");</code>
これにより、30 秒のタイムアウトでファイルのダウンロードが開始されます。この時間枠内にダウンロードが完了できない場合は、例外がスローされるため、状況を適切に処理し、不必要な遅延を回避できます。
以上がWebClient.DownloadFile() のタイムアウトを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。