首頁 >後端開發 >C++ >如何在 WebClient.DownloadFile() 中實作逾時以防止無限期等待?

如何在 WebClient.DownloadFile() 中實作逾時以防止無限期等待?

Patricia Arquette
Patricia Arquette原創
2025-01-11 17:36:41616瀏覽

How Can I Implement Timeouts in WebClient.DownloadFile() to Prevent Indefinite Waits?

使用 WebClient.DownloadFile() 處理逾時

使用WebClient.DownloadFile()進行檔案下載有時會因網路問題或無法存取的資源而導致無限期的延遲。 為了防止這種情況,實現超時機制至關重要。

建立自訂 WebClient 類別

解決方案是建立一個繼承自 WebClient 的自訂類,讓您為底層 WebRequest 設定超時值。方法如下:

<code class="language-csharp">using System;
using System.Net;

public class TimedWebClient : WebClient
{
    public int TimeoutMilliseconds { get; set; }

    public TimedWebClient() : this(60000) { } // Default timeout: 60 seconds

    public TimedWebClient(int timeoutMilliseconds)
    {
        TimeoutMilliseconds = timeoutMilliseconds;
    }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request != null)
        {
            request.Timeout = TimeoutMilliseconds;
        }
        return request;
    }
}</code>

使用自訂類別

此自訂TimedWebClient可以像標準WebClient一樣使用:

<code class="language-csharp">// Set a 30-second timeout
var timedClient = new TimedWebClient(30000);

// Download the file
timedClient.DownloadFile("http://example.com/file.zip", "localfile.zip");</code>

此方法可確保檔案下載在指定的逾時後終止,從而防止您的應用程式因網路或存取問題而無限期掛起。 超時設定以毫秒為單位。

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

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