void download(UpdateInfo updateInfo) { System.ComponentModel.BackgroundWorker bgWorker = null; Acr.UserDialogs.IProgressDialog progressDialog = null; bgWorker = new System.ComponentModel.BackgroundWorker(); bgWorker.DoWork += (bgSender, bgArgs) => { var objArgs = bgArgs.Argument as object[]; UpdateInfo _updateInfo_ = objArgs[0] as UpdateInfo; new Util.DownloadUtils().DownloadFileByHttpRequest ( requestUri: _updateInfo_.Url, fileLength: _updateInfo_.FileLength, saveFileFolder: System.IO.Path.Combine(Common.StaticInfo.AndroidExternalCachePath, "UpdateAPKs"), renameDownloadFileName: string.Empty, // string.Empty 取默认文件名 backgroundWorker: bgWorker, eventArgs: bgArgs // 传入 bgArgs 参数, 在 DownloadFileByHttpRequest 返回结果 -- 下载文件的最终路径 ); System.Threading.Thread.Sleep(500); // 为显示进度 100 % }; bgWorker.RunWorkerCompleted += (bgSender, bgResult) => { progressDialog.Hide(); if (bgResult.Error != null) { Acr.UserDialogs.UserDialogs.Instance.Alert(new Acr.UserDialogs.AlertConfig() { Title = "捕获异常", Message = bgResult.Error.GetFullInfo() }); } else { try { string path = bgResult.Result as string; System.Diagnostics.Debug.WriteLine($"打开APK安装器。APK路径[{path}]"); App.AndroidIntentUtils.InstallAPK(path); } catch (Exception ex) { string msg = $"{ex.GetFullInfo()}"; System.Diagnostics.Debug.WriteLine(msg); Acr.UserDialogs.UserDialogs.Instance.Alert(new Acr.UserDialogs.AlertConfig() { Title = "捕获异常", Message = msg }); } } }; bgWorker.WorkerReportsProgress = true; bgWorker.ProgressChanged += (bgSender, bgArgs) => { if (progressDialog.IsShowing == false) { progressDialog.Show(); } progressDialog.Title = $"正在下载..."; progressDialog.PercentComplete = bgArgs.ProgressPercentage; }; progressDialog = Acr.UserDialogs.UserDialogs.Instance.Progress(); bgWorker.RunWorkerAsync(new object[] { updateInfo }); }
public static void ShowProgressDialog() { currentProgressDialog?.Show(); }