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
Linda Hamiltonasal
2025-01-12 18:52:42174semak imbas

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>

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>

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>

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!

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