首頁 >後端開發 >C++ >如何實作 WebClient.DownloadFile() 逾時?

如何實作 WebClient.DownloadFile() 逾時?

Susan Sarandon
Susan Sarandon原創
2025-01-11 17:57:42429瀏覽

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

為 WebClient.DownloadFile() 實作逾時

為了防止從可能緩慢或無回應的伺服器下載檔案時無限期延遲,為 WebClient.DownloadFile() 實現逾時至關重要。 此範例示範了一個自訂解決方案:

我們建立一個衍生類別 WebDownload,繼承自基底 WebClient 類別:

<code class="language-csharp">public class WebDownload : WebClient
{
    /// <summary>
    /// Timeout in milliseconds
    /// </summary>
    public int Timeout { get; set; }

    public WebDownload() : this(60000) { } // Default 60-second timeout

    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>

Timeout 屬性(以毫秒為單位)控制下載逾時。

用法很簡單:實例化 WebDownload 類別並像標準 WebClient 一樣使用它:

<code class="language-csharp">using (WebDownload client = new WebDownload(10000)) // 10-second timeout
{
    client.DownloadFile("http://example.com/file.zip", "file.zip");
}</code>

這種方法可確保您的下載操作不會在檔案無法存取或伺服器無回應的情況下無限期掛起,從而為檔案下載提供強大的解決方案。

以上是如何實作 WebClient.DownloadFile() 逾時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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