本文整理汇总了C#中IProgress.ReportProgress方法的典型用法代码示例。如果您正苦于以下问题:C# IProgress.ReportProgress方法的具体用法?C# IProgress.ReportProgress怎么用?C# IProgress.ReportProgress使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IProgress
的用法示例。
在下文中一共展示了IProgress.ReportProgress方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Do
public static void Do(Uri applicationLocation, string name, IEnumerable<string> arguments, IProgress<RedistInstallationProgressEvent> progress)
{
var downloadExpectedPercentOfTotal = 0.7;
var tempExeLocation = Path.Combine(Path.GetTempPath(), name + ".exe");
using (var webClient = new WebClient())
{
var threadResult = new TaskCompletionSource<object>();
webClient.DownloadFileCompleted += (sender, args) =>
{
if(args.Error != null)
threadResult.TrySetException(args.Error);
else if(args.Cancelled)
threadResult.TrySetCanceled();
else
threadResult.SetResult(args.UserState);
};
webClient.DownloadProgressChanged += (sender, args) =>
{
progress.ReportProgress((int) (args.ProgressPercentage * downloadExpectedPercentOfTotal));
};
webClient.DownloadFileAsync(applicationLocation, tempExeLocation);
threadResult.Task.Wait(TimeSpan.FromMinutes(5));
}
var startInfo = new ProcessStartInfo(tempExeLocation, string.Join(" ", arguments))
{
UseShellExecute = true,
Verb = "runas"
};
var process = Process.Start(startInfo);
if (process == null)
throw new FailedToStartProcess(tempExeLocation);
process.WaitForExit();
progress.ReportProgress(100);
if(process.ExitCode != 0)
throw new ExitWithCode(process.ExitCode);
}