//仅在启动一段时间后检查一次更新, 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(); }