ホームページ >バックエンド開発 >C++ >WebClient.DownloadFile() のタイムアウトを設定するにはどうすればよいですか?

WebClient.DownloadFile() のタイムアウトを設定するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-11 17:41:41593ブラウズ

How to Set a Timeout for WebClient.DownloadFile()?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。