Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Tamat Masa dalam WebClient.DownloadFile() untuk Mencegah Penantian Tidak Tentu?

Bagaimanakah Saya Boleh Melaksanakan Tamat Masa dalam WebClient.DownloadFile() untuk Mencegah Penantian Tidak Tentu?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 17:36:41617semak imbas

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

Mengendalikan Tamat Masa dengan WebClient.DownloadFile()

Menggunakan WebClient.DownloadFile() untuk muat turun fail kadangkala boleh mengakibatkan kelewatan yang tidak pasti disebabkan masalah rangkaian atau sumber yang tidak boleh diakses. Untuk mengelakkan ini, melaksanakan mekanisme tamat masa adalah penting.

Membuat Kelas Pelanggan Web Tersuai

Penyelesaian adalah untuk mencipta kelas tersuai yang diwarisi daripada WebClient, membolehkan anda menetapkan nilai tamat masa untuk WebRequest asas. Begini caranya:

<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>

Menggunakan Kelas Tersuai

Tersuai ini TimedWebClient boleh digunakan sama seperti standard 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>

Pendekatan ini memastikan muat turun fail ditamatkan selepas tamat masa yang ditentukan, menghalang aplikasi anda daripada digantung selama-lamanya disebabkan oleh isu rangkaian atau akses. Tamat masa ditetapkan dalam milisaat.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Tamat Masa dalam WebClient.DownloadFile() untuk Mencegah Penantian Tidak Tentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn