Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Melaksanakan Pemberitahuan Kemajuan Semasa Muat Turun Fail dengan HttpClient dalam .NET 4.5?

Bagaimanakah Saya Boleh Melaksanakan Pemberitahuan Kemajuan Semasa Muat Turun Fail dengan HttpClient dalam .NET 4.5?

Linda Hamilton
Lepaskan: 2025-01-12 18:52:42
asal
216 orang telah melayarinya

How Can I Implement Progress Notification During File Downloads with HttpClient in .NET 4.5?

Gunakan .NET 4.5 HttpClient untuk melaksanakan pemberitahuan kemajuan muat turun fail

Dalam .NET 4.5, antara muka IProgress<T> menyediakan cara untuk mengendalikan pelaporan kemajuan untuk operasi tak segerak dengan cekap. Ini membolehkan anda melaksanakan bar kemajuan atau elemen UI lain untuk memaklumkan pengguna tentang status muat turun.

Muat turun kaedah sambungan dengan laporan kemajuan

Untuk menyesuaikan diri dengan senario muat turun fail, anda boleh menggunakan kaedah DownloadAsync tersuai untuk melanjutkan kelas HttpClient, yang mengandungi IProgress<T>:

<code class="language-csharp">public static class HttpClientExtensions
{
    public static async Task DownloadAsync(this HttpClient client, string requestUri, Stream destination, IProgress<float> progress = null, CancellationToken cancellationToken = default)
    {
        // ... 实现细节 ...
    }
}</code>
Salin selepas log masuk

Butiran pelaksanaan

Kaedah sambungan bergantung pada:

  1. Dapatkan maklumat pengepala HTTP untuk menentukan panjang kandungan untuk mengira kemajuan.
  2. Gunakan kaedah sambungan replikasi strim tak segerak dengan fungsi pelaporan kemajuan.

Kaedah sambungan strim untuk pemantauan kemajuan

Kemajuan dijejaki dengan mengemas kini IProgress<long> masuk. Kaedah sambungan penyalin strim ini melaporkan kemajuan dalam kemajuan muat turun:

<code class="language-csharp">public static class StreamExtensions
{
    public static async Task CopyToAsync(this Stream source, Stream destination, int bufferSize, IProgress<long> progress = null, CancellationToken cancellationToken = default)
    {
        // ... 实现细节 ...
    }
}</code>
Salin selepas log masuk

Contoh penggunaan

Anda boleh menggunakan kaedah sambungan ini seperti berikut:

<code class="language-csharp">// 创建HTTP客户端
using (var client = new HttpClient())
{
    // 创建用于保存下载数据的文件
    using (var file = new FileStream("download.dat", FileMode.Create))
    {
        // 注册进度回调
        var progress = new Progress<float>(p => Console.WriteLine($"Progress: {p * 100}%"));

        // 使用进度报告下载数据
        await client.DownloadAsync(downloadUrl, file, progress);
    }
}</code>
Salin selepas log masuk

Pelanjutan ini membolehkan anda melaksanakan bar kemajuan semasa memuat turun fail melalui HTTP sambil memastikan data yang diminta daripada pelayan memerlukan sijil, manakala DownloadOperations ciri ini tidak disokong.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pemberitahuan Kemajuan Semasa Muat Turun Fail dengan HttpClient dalam .NET 4.5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan