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!