首頁 >後端開發 >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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn