WebClient.DownloadFile() のタイムアウトの設定
WebClient.DownloadFile()
を使用したリモート ファイルのダウンロードは、特にアクセスできないファイルの場合、時間がかかることがあります。 タイムアウト メカニズムは、無期限の待機を避けるために非常に重要です。
実装:
タイムアウトを実装する最も効果的な方法は、WebRequest
を継承するカスタム クラスを作成することです。これにより、基になるリクエストで Timeout
プロパティを直接設定できるようになります。 以下に例を示します:
<code class="language-csharp">using System; using System.Net; public class TimedWebClient : WebClient { public int TimeoutMilliseconds { get; set; } public TimedWebClient() : this(60000) { } // Default 60-second timeout public TimedWebClient(int timeoutMilliseconds) { TimeoutMilliseconds = timeoutMilliseconds; } protected override WebRequest GetWebRequest(Uri address) { WebRequest request = base.GetWebRequest(address); if (request != null) { request.Timeout = TimeoutMilliseconds; } return request; } }</code>
この TimedWebClient
クラスは標準の WebClient
と同様に機能しますが、構成可能なタイムアウトが追加されます。 タイムアウトをミリ秒単位で指定して、ドロップインの代替として使用します。 これにより、すべてのダウンロード試行が定義されたタイムアウトを遵守し、利用できないファイルによる長時間の遅延が防止されます。
以上がWebClient.DownloadFile() でタイムアウトを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。