private async void InitializeAsync() { //恢复上次关闭时保存的控件 var list = await TXDataFileIO.GetMessagesAsync(); if (list != null) { foreach (Models.DownloaderMessage ms in list) { DownloadBar db = new DownloadBar(); DownloadBarCollection.Add(db); AbstractDownloader dw = AbstractDownloader.GetDownloaderFromType(ms.DownloaderType); db.SetDownloader(dw); dw.SetDownloaderFromBreakpoint(ms); } } if (Settings.DownloadsFolderToken == null) { var contentDialog = new ContentDialog() { Title = Strings.AppResources.GetString("DownloadFolderPathIllegal"), Content = Strings.AppResources.GetString("SetDownloadFolder"), PrimaryButtonText = Strings.AppResources.GetString("Select"), SecondaryButtonText = Strings.AppResources.GetString("Cancel"), FullSizeDesired = false, }; contentDialog.PrimaryButtonClick += async(sender, e) => { var folderPicker = new FolderPicker(); folderPicker.FileTypeFilter.Add("."); StorageFolder folder = null; folder = await folderPicker.PickSingleFolderAsync(); if (folder == null) { App.Current.Exit(); } else { Settings.DownloadsFolderToken = StorageApplicationPermissions .MostRecentlyUsedList.Add(folder); } }; contentDialog.SecondaryButtonClick += (sender, e) => App.Current.Exit(); await contentDialog.ShowAsync(); } }
/// <summary> /// 在将要挂起应用程序执行时调用。 /// 无需知道应用程序会被终止还是会恢复, /// 并让内存内容保持不变。 /// </summary> /// <param name="sender">挂起的请求的源。</param> /// <param name="e">有关挂起请求的详细信息。</param> private async void OnSuspending(object sender, SuspendingEventArgs e) { int doneNum = 0; Debug.WriteLine("OnSuspending"); var deferral = e.SuspendingOperation.GetDeferral(); if (Settings.IsNotificationShownWhenApplicationSuspended) { Toasts.ToastManager.ShowSimpleToast( Strings.AppResources.GetString("ApplicationSuspendedTitle"), Strings.AppResources.GetString("ApplicationSuspendedMessage") ); } //保存应用程序状态并停止任何后台活动 List <Models.DownloaderMessage> list = new List <Models.DownloaderMessage>(); MainPage.Current.DownloadBarManager.Invoke((collection) => { foreach (Controls.DownloadBar bar in collection) { if (bar.downloader.State == Enums.DownloadState.Disposed || bar.downloader.State == Enums.DownloadState.Uninitialized) { continue; } if (bar.downloader.State == Enums.DownloadState.Done) { doneNum++; if (doneNum > Settings.NormalRecordNumberParser[Settings.MaximumRecordsIndex]) { continue; } } bar.downloader.Pause(); list.Add(bar.downloader.Message); } }); await TXDataFileIO.SaveDownloadMessagesAsync(list); //保存未完成的下载 await StorageTools.StorageManager.GetCleanAsync(); deferral.Complete(); }
/// <summary> /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行, /// 已执行,逻辑上等同于 main() 或 WinMain()。 /// </summary> public App() { this.InitializeComponent(); this.Suspending += OnSuspending; this.EnteredBackground += OnEnteringBackground; this.LeavingBackground += OnLeavingBackground; this.Resuming += OnResuming; storeContext.OfflineLicensesChanged += async(s, e) => { AppLicense = await s.GetAppLicenseAsync(); LicenseChanged?.Invoke(AppLicense); }; //处理运行时版本信息更新 InitializeAppLicense(); //初始化版本信息 if (Settings.DownloadsFolderToken == null || !StorageApplicationPermissions.MostRecentlyUsedList .ContainsItem(Settings.DownloadsFolderToken)) { Settings.DownloadsFolderToken = null; } TXDataFileIO.StartInitializeMessages(); //不管有没有都要Start Converters.ExtentionConverter.InitializeDictionary(); }