private async void afterActions() { try { await Client.Current.RefreshCookiesAsync(); } catch (Exception) { //Ignore exceptions here. } try { var ver = await VersionChecker.CheckAsync(); if (ver is VersionChecker.GitHubRelease v) { var dialog = new UpdateDialog(v); await dialog.ShowAsync(); } } catch (Exception) { //Ignore exceptions here. } try { await ExClient.HentaiVerse.HentaiVerseInfo.FetchAsync(); } catch (Exception) { //Ignore exceptions here. } try { if (await EhTagTranslatorClient.Client.NeedUpdateAsync()) { AboutControl.UpdateETT.Execute(); } } catch (Exception) { RootControl.RootController.SendToast(Strings.Resources.Database.EhTagTranslatorClient.Update.Failed, null); } if (DateTimeOffset.Now - EhTagClient.Client.LastUpdate > new TimeSpan(7, 0, 0, 0)) { AboutControl.UpdateEhWiki.Execute(); } if (DateTimeOffset.Now - BannerProvider.Provider.LastUpdate > new TimeSpan(7, 0, 0, 0)) { try { await BannerProvider.Provider.FetchBanners(); } catch (Exception) { //Ignore exceptions here. } } }
//仅在启动一段时间后检查一次更新, private static void ScheduledUpdateCheck(object sender, NotifyIcon tray) { var timer = sender as Timer; timer.Stop(); timer.Dispose(); timer = null; if (!config.Get <bool>(ConfigKeys.AutoCheckForUpdate)) { return; } var checker = new VersionChecker(AppSettings.CheckForUpdateUrl); checker.Finished += info => { var whatsNew = info.WhatsNew.Length > 50 ? info.WhatsNew.Substring(0, 50) : info.WhatsNew; if (info.Version != Application.ProductVersion) { tray.BalloonTipClicked += (o, args) => { if (info.Version == Application.ProductVersion) { return; } using (var frm = new UpdateInfoForm(ConfigurationManager.AppSettings.Get(Constants.ProductHomePageAppSettingKey), info)) { frm.ShowDialog(); } }; tray.ShowBalloonTip(1000 * 15, Application.ProductName + "新版本可用!", "版本:" + info.Version + "\n" + whatsNew, ToolTipIcon.Info); } checker.Dispose(); checker = null; GC.Collect(); }; #if DEBUG checker.ErrorHappened += e => { Debug.WriteLine("Program.ScheduledUpdateCheck Error:" + e.Message); checker.Dispose(); checker = null; GC.Collect(); }; #endif checker.CheckAsync(); }
private void btn_checkUpdateNow_Click(object sender, EventArgs e) { if (_versionChecker != null && _versionChecker.IsBusy) { return; } //btn_checkUpdateNow.Enabled = false; btn_checkUpdateNow.Text = ""; btn_checkUpdateNow.Image = Resources.checking; //picture_checking.Visible = true; lb_Version.Text = Application.ProductVersion; errorProvider.Clear(); if (_versionChecker == null) { _versionChecker = new VersionChecker(AppSettings.CheckForUpdateUrl); _versionChecker.Finished += version => { if (btn_checkUpdateNow.IsDisposed) { return; } btn_checkUpdateNow.Invoke(new Action(() => { //btn_checkUpdateNow.Enabled = true; btn_checkUpdateNow.Text = "立即检查"; btn_checkUpdateNow.Image = null; //picture_checking.Visible = false; lb_Version.Text = Application.ProductVersion; lb_Version.ForeColor = Color.DarkGray; if (version == null) { errorProvider.SetIconPadding(btn_checkUpdateNow, 4); errorProvider.SetError(btn_checkUpdateNow, "可能由于服务器错误,检查更新失败"); return; } if (version.Version != Application.ProductVersion) { using (var frm = new UpdateInfoForm(AppSettings.ProductHomePage, version)) { frm.ShowDialog(); } } else { lb_Version.Text = Application.ProductVersion + " (已为最新)"; lb_Version.ForeColor = Color.CornflowerBlue; } })); }; _versionChecker.ErrorHappened += exception => { #if DEBUG Console.WriteLine(exception); #endif btn_checkUpdateNow.Invoke(new Action(() => { //btn_checkUpdateNow.Enabled = true; btn_checkUpdateNow.Text = "立即检查"; btn_checkUpdateNow.Image = null; //picture_checking.Visible = false; errorProvider.SetIconPadding(btn_checkUpdateNow, 4); errorProvider.SetError(btn_checkUpdateNow, string.Format("可能由于网络错误,检查更新失败: \n{0}", exception.Message)); })); }; } _versionChecker.CheckAsync(); }
private async void afterActions() { try { var ver = await VersionChecker.CheckAsync(); if (ver is Windows.ApplicationModel.PackageVersion v) { var dialog = new UpdateDialog { Version = v }; await dialog.ShowAsync(); } } catch (Exception) { //Ignore exceptions here. } try { await ExClient.HentaiVerse.HentaiVerseInfo.FetchAsync(); } catch (Exception) { //Ignore exceptions here. } if (DateTimeOffset.Now - EhTagClient.Client.LastUpdate > new TimeSpan(7, 0, 0, 0)) { try { await EhTagClient.Client.UpdateAsync(); RootControl.RootController.SendToast(Strings.Resources.Database.EhTagClient.Update.Succeeded, null); } catch (Exception) { RootControl.RootController.SendToast(Strings.Resources.Database.EhTagClient.Update.Failed, null); } } try { if (await EhTagTranslatorClient.Client.NeedUpdateAsync()) { await EhTagTranslatorClient.Client.UpdateAsync(); RootControl.RootController.SendToast(Strings.Resources.Database.EhTagTranslatorClient.Update.Succeeded, null); } } catch (Exception) { RootControl.RootController.SendToast(Strings.Resources.Database.EhTagTranslatorClient.Update.Failed, null); } if (DateTimeOffset.Now - BannerProvider.Provider.LastUpdate > new TimeSpan(7, 0, 0, 0)) { try { await BannerProvider.Provider.FetchBanners(); } catch (Exception) { //Ignore exceptions here. } } }