.NET 4.5 HttpClient を使用してファイルのダウンロードの進行状況通知を実装する
.NET 4.5 では、IProgress<T>
インターフェイスは、非同期操作の進行状況レポートを効率的に処理する方法を提供します。これにより、進行状況バーやその他の UI 要素を実装して、ダウンロード ステータスをユーザーに通知することができます。
ファイルのダウンロード シナリオに適応させるために、カスタム DownloadAsync
メソッドを使用して、HttpClient
を含む 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>
拡張メソッドは以下に依存します:
進行状況は、受信した IProgress<long>
を更新することで追跡されます。このストリーム コピー拡張メソッドは、ダウンロードの進行状況を報告します:
<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>
この拡張メソッドは次のように使用できます:
<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>
この拡張機能を使用すると、サーバーから要求されたデータに証明書が必要であることを確認しながら、HTTP 経由でファイルをダウンロードするときに進行状況バーを実装できますが、DownloadOperations
この機能はサポートされていません。
以上が.NET 4.5 で HttpClient を使用してファイルのダウンロード中に進行状況通知を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。