.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 중국어 웹사이트의 기타 관련 기사를 참조하세요!