首页 > 解决方案 > UWP C#:IAsyncOperationWithProgress 的进度

问题描述

如何捕获 an 的进度IAsyncOperationWithProgress并将其发送到 a ProgressBar

var packageManager = new PackageManager();
var packageUri = new Uri("https://example.com/");
var options = AddPackageByAppInstallerOptions.None;
var defaultPackageVolume = packageManager.GetDefaultPackageVolume();

var operation = packageManager.AddPackageByAppInstallerFileAsync(packageUri, options, defaultPackageVolume);

operation.Progress( ??? ); // What should I do?
MyProgressBar.Value = ???; // I'd like to display installation progress % in real time.

await operation;

标签: c#asynchronousuwpwindows-runtimewinrt-async

解决方案


最容易调用AsTask

var progress = new Progress<DeploymentProgress>(
    report => myProgressBar.Value = report.Percentage);
var operation = packageManager.AddPackageByAppInstallerFileAsync(packageUri, options, defaultPackageVolume)
    .AsTask(progress);

await operation;

未经编译和测试;一些操作DeploymentProgress.Percentage可能是必要的。


推荐阅读