private void UpdateCheckHandler(object sender, EventArgs e) { foreach (var program in ExternalPrograms.Items) { if (program is ExternalLocalProgram) { continue; } UpdateCheck(program, _updateCheckerStop.Token) .ContinueWith(t => { if (_updateCheckerStop.Token.IsCancellationRequested) { return; } var updateResult = t.Result; if (!string.IsNullOrEmpty(updateResult)) { program.NeedUpdate(true, updateResult); if (program.BadgeValue == 0) { Application.Current.Dispatcher?.BeginInvoke(new Action(() => { Action updateAction = () => { UpdateMatchedApplication(program, updateResult); program.NeedUpdate(false); }; var balloon = new UpdateApplicationNotify { NotifyText = $"{program.Label} is updated", UpdateAction = updateAction }; NotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 5000); })); program.BadgeValue = 1; Console.WriteLine($@"Need update application = {program.Label}"); } } else { program.BadgeValue = 0; //program.Update = null; } }, _updateCheckerStop.Token); } }
private void DoUpdateCheck(object sender, EventArgs e) { foreach (var app in MatchedAppInfos.Items) { if (app is ConfigurationMenu || app is ExitMenu) { continue; } UpdateCheck(app, _updateCheckerStop.Token) .ContinueWith(t => { if (_updateCheckerStop.Token.IsCancellationRequested) { return; } var updateResult = t.Result; if (!string.IsNullOrEmpty(updateResult)) { app.Update = new UpdateModel() { NeedUpdate = true, OriginalFile = updateResult }; if (app.BadgeValue == 0) { Application.Current.Dispatcher?.BeginInvoke(new Action(() => { var balloon = new UpdateApplicationNotify { NotifyText = $"{app.Header} is updated" }; NotifyIcon.ShowCustomBalloon(balloon, PopupAnimation.Slide, 5000); })); app.BadgeValue = 1; Console.WriteLine($@"Need update application = {app.ApplicationName}"); } } else { app.BadgeValue = 0; app.Update = null; } }, _updateCheckerStop.Token); } }