protected override async System.Threading.Tasks.Task InitializeAsync(CancellationToken cancellationToken, IProgress <ServiceProgressData> progress) { try { await this.JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); Settings.Upgrade(); // Writes the language used to the global variable Settings.Default.translates = System.Globalization.CultureInfo.CurrentCulture.ToString().Replace("-", ""); Settings.Default.Save(); ide = GetGlobalService(typeof(SDTE)) as DTE; ide.Events.WindowEvents.WindowActivated += this.WindowActivated; ide.Events.SolutionEvents.BeforeClosing += this.SolutionBeforeClosing; String ideVersion = ide.Version.Split(new Char[1] { '.' })[0]; this.versionString = $"Visual Studio {Constants.IdeVersions[Int32.Parse(ideVersion, CultureInfo.InvariantCulture)]}"; this.versionImageKey = $"dev{ideVersion}"; await SettingsCommand.InitializeAsync(this).ConfigureAwait(true); if (!this.Discord.IsInitialized && !this.Discord.IsDisposed) { if (!this.Discord.Initialize()) { ActivityLog.LogError("DiscordRPforVS", $"{Translates.LogError(Settings.Default.translates)}"); } } if (Settings.loadOnStartup) { await this.UpdatePresenceAsync(ide.ActiveDocument).ConfigureAwait(true); } await base.InitializeAsync(cancellationToken, progress).ConfigureAwait(true); } catch (OperationCanceledException exc) { ActivityLog.LogError(exc.Source, exc.Message); } }
/// <summary> /// Initializes the singleton instance of the command. /// </summary> /// <param name="package">Owner package, not null.</param> public static async Task InitializeAsync(AsyncPackage package) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(package.DisposalToken); Instance = new SettingsCommand(package, await package.GetServiceAsync(typeof(IMenuCommandService)).ConfigureAwait(true) as OleMenuCommandService); }