Memuat turun fail besar daripada pelayan perlahan kerap mengakibatkan ralat tamat masa apabila menggunakan objek .NET WebClient
. Artikel ini meneroka penyelesaian untuk melanjutkan tempoh tamat masa atau mencadangkan kaedah alternatif untuk mendapatkan set data yang besar.
Tetapan tamat masa lalai dalam WebClient
selalunya tidak mencukupi untuk sambungan rangkaian yang perlahan. Untuk meningkatkan ini, kita boleh membuat kelas WebClient
tersuai yang mengatasi kaedah GetWebRequest
dan menetapkan tempoh tamat masa yang lebih lama.
Coretan kod berikut menunjukkan cara melanjutkan tamat masa kepada 20 minit:
<code class="language-csharp">private class MyWebClient : WebClient { protected override WebRequest GetWebRequest(Uri uri) { WebRequest w = base.GetWebRequest(uri); w.Timeout = 20 * 60 * 1000; // 20 minutes in milliseconds return w; } }</code>
Menggunakan kelas MyWebClient
tersuai ini membolehkan muat turun diteruskan tanpa menghadapi pengecualian tamat masa.
Walaupun memanjangkan tamat masa adalah berfaedah, tamat masa "tak terhingga" sebenar tidak disokong secara langsung oleh WebClient
. Berikut ialah beberapa alternatif yang berkesan:
Menggunakan BackgroundWorker: Kelas BackgroundWorker
, apabila diwarisi dan kaedah DoWork
nya ditindih, mendayakan muat turun dalam urutan berasingan, memintas WebClient
had tamat masa.
Memanfaatkan HttpClient: HttpClient
, alternatif yang lebih moden dan teguh kepada WebClient
, menawarkan sifat Timeout
untuk tetapan tamat masa tersuai.
Menggunakan Async/Await: Pengaturcaraan tak segerak dengan async
/await
memudahkan operasi berjalan lama seperti muat turun tanpa menyekat urutan utama. Pendekatan ini sesuai apabila keselamatan benang bukan kebimbangan utama.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyesuaikan Tetapan Tamat Masa untuk Muat Turun Fail Besar dengan .NET WebClient?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!