private void App_Suspending(object sender, SuspendingEventArgs e) { SQLite.Current.Dispose(); AppInstanceIdContainer.UngisterId(AppInstanceIdContainer.CurrentId); }
private void App_Resuming(object sender, object e) { AppInstanceIdContainer.RegisterId(AppInstanceIdContainer.CurrentId); }
static void Main(string[] args) { IActivatedEventArgs activatedArgs = AppInstance.GetActivatedEventArgs(); if (AppInstance.GetInstances().Count == 0) { AppInstanceIdContainer.ClearAll(); } switch (activatedArgs) { case ToastNotificationActivatedEventArgs ToastActivate: { switch (ToastActivate.Argument) { case "EnterBackgroundTips": { if (AppInstance.RecommendedInstance != null) { AppInstance.RecommendedInstance.RedirectActivationTo(); } else if (!string.IsNullOrWhiteSpace(AppInstanceIdContainer.LastActiveId)) { do { if (AppInstance.GetInstances().Any((Ins) => Ins.Key == AppInstanceIdContainer.LastActiveId)) { if (AppInstance.FindOrRegisterInstanceForKey(AppInstanceIdContainer.LastActiveId) is AppInstance TargetInstance) { TargetInstance.RedirectActivationTo(); } break; } else { AppInstanceIdContainer.UngisterId(AppInstanceIdContainer.LastActiveId); } }while (!string.IsNullOrEmpty(AppInstanceIdContainer.LastActiveId)); } break; } case "Restart": { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); break; } } break; } case CommandLineActivatedEventArgs CmdActivate: { if (CmdActivate.Operation.Arguments.StartsWith("RX-Explorer.exe", StringComparison.OrdinalIgnoreCase)) { if (AppInstance.RecommendedInstance != null) { AppInstance.RecommendedInstance.RedirectActivationTo(); } else if (!string.IsNullOrWhiteSpace(AppInstanceIdContainer.LastActiveId)) { do { if (AppInstance.GetInstances().Any((Ins) => Ins.Key == AppInstanceIdContainer.LastActiveId)) { if (AppInstance.FindOrRegisterInstanceForKey(AppInstanceIdContainer.LastActiveId) is AppInstance TargetInstance) { TargetInstance.RedirectActivationTo(); } break; } else { AppInstanceIdContainer.UngisterId(AppInstanceIdContainer.LastActiveId); } }while (!string.IsNullOrEmpty(AppInstanceIdContainer.LastActiveId)); } else { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); } } else { if (!ApplicationData.Current.LocalSettings.Values.ContainsKey("AlwaysStartNew")) { ApplicationData.Current.LocalSettings.Values["AlwaysStartNew"] = true; } bool AlwaysStartNew = Convert.ToBoolean(ApplicationData.Current.LocalSettings.Values["AlwaysStartNew"]); if (AlwaysStartNew) { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); } else { if (!string.IsNullOrWhiteSpace(AppInstanceIdContainer.LastActiveId)) { do { if (AppInstance.GetInstances().Any((Ins) => Ins.Key == AppInstanceIdContainer.LastActiveId)) { if (AppInstance.FindOrRegisterInstanceForKey(AppInstanceIdContainer.LastActiveId) is AppInstance TargetInstance) { TargetInstance.RedirectActivationTo(); } break; } else { AppInstanceIdContainer.UngisterId(AppInstanceIdContainer.LastActiveId); } }while (!string.IsNullOrEmpty(AppInstanceIdContainer.LastActiveId)); } else { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); } } } break; } case LaunchActivatedEventArgs LaunchArg: { if (!ApplicationData.Current.LocalSettings.Values.ContainsKey("AlwaysStartNew")) { ApplicationData.Current.LocalSettings.Values["AlwaysStartNew"] = true; } bool AlwaysStartNew = Convert.ToBoolean(ApplicationData.Current.LocalSettings.Values["AlwaysStartNew"]); if (AlwaysStartNew) { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); } else { if (!string.IsNullOrWhiteSpace(AppInstanceIdContainer.LastActiveId)) { do { if (AppInstance.GetInstances().Any((Ins) => Ins.Key == AppInstanceIdContainer.LastActiveId)) { if (AppInstance.FindOrRegisterInstanceForKey(AppInstanceIdContainer.LastActiveId) is AppInstance TargetInstance) { TargetInstance.RedirectActivationTo(); } break; } else { AppInstanceIdContainer.UngisterId(AppInstanceIdContainer.LastActiveId); } }while (!string.IsNullOrEmpty(AppInstanceIdContainer.LastActiveId)); } else { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); } } break; } case FileActivatedEventArgs _: { if (!string.IsNullOrWhiteSpace(AppInstanceIdContainer.LastActiveId)) { do { if (AppInstance.GetInstances().Any((Ins) => Ins.Key == AppInstanceIdContainer.LastActiveId)) { if (AppInstance.FindOrRegisterInstanceForKey(AppInstanceIdContainer.LastActiveId) is AppInstance TargetInstance) { TargetInstance.RedirectActivationTo(); } break; } else { AppInstanceIdContainer.UngisterId(AppInstanceIdContainer.LastActiveId); } }while (!string.IsNullOrEmpty(AppInstanceIdContainer.LastActiveId)); } else { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); } break; } default: { string InstanceId = Guid.NewGuid().ToString(); AppInstance Instance = AppInstance.FindOrRegisterInstanceForKey(InstanceId); AppInstanceIdContainer.RegisterId(InstanceId); Application.Start((p) => new App()); break; } } }
private void App_Suspending(object sender, SuspendingEventArgs e) { AppInstanceIdContainer.UngisterCurrentId(); }
private void App_Suspending(object sender, SuspendingEventArgs e) { PipeLineController.Current.Dispose(); FullTrustProcessController.Current.Dispose(); AppInstanceIdContainer.UngisterCurrentId(); }
private async void App_Resuming(object sender, object e) { await FullTrustProcessController.Current.ConnectToFullTrustProcessorAsync().ConfigureAwait(true); AppInstanceIdContainer.RegisterCurrentId(AppInstanceIdContainer.CurrentId); }