Ejemplo n.º 1
0
        static async Task Main(string[] args)
        {
            await Console.Out.WriteLineAsync("Starting app2");

            try
            {
                var instanceService = new SingleInstanceService();
                if (!await instanceService.Start())
                {
                    await Console.Out.WriteLineAsync("There is all ready another instance of this application running");

                    await instanceService.SignalFirstInstance(new List <string>() { "Hello from app2" });
                }
                else
                {
                    await Console.Out.WriteLineAsync("This is the first instance of this application running");
                }

                Console.ReadKey();
                instanceService.Stop();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Ejemplo n.º 2
0
        void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            ApplicationViewService.LoadLastIndex();
            HandleStartupStart();
            FocusSearchText();

            SingleInstanceService.InitWndProc(this);
        }
Ejemplo n.º 3
0
        void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            ErrorProvider.Instance.LogError(string.Empty, (Exception)e.ExceptionObject);
            MessageBox.Show("An error occured.\nSee the log (in Local App DATA\\CodeIDX) for details.", "Fatal Error", MessageBoxButton.OK, MessageBoxImage.Error);

            SingleInstanceService.Stop();
            Environment.Exit(1);
        }
Ejemplo n.º 4
0
        public async Task Start_AnotherInstanceIsRunning_ReturnsFalse()
        {
            await _singleInstanceService.Start();

            var singleInstanceService2 = new SingleInstanceService();

            var isSingleInstance = await singleInstanceService2.Start();

            Assert.IsFalse(isSingleInstance);

            singleInstanceService2.Stop();
            _singleInstanceService.Stop();
        }
Ejemplo n.º 5
0
        public ApplicationCore(IContainer c)
        {
            container  = c;
            model      = container.Resolve <Model>();
            logService = container.Resolve <LogService>();

            connectionController = c.Resolve <ConnectionController>();
            //Don't send two request went doing a post..
            ServicePointManager.Expect100Continue = false;
            //Don't limit connections to a single node - 100 I think is the upper limit.
            ServicePointManager.DefaultConnectionLimit = 100;
            //System.Net.ServicePointManager.MaxServicePointIdleTime = 20000000;
            updateChecker           = container.Resolve <UpdateCheckerService>();
            interfaceController     = container.Resolve <InterfaceController>();
            overlordManagerService  = container.Resolve <OverlordManagerService>();
            singleInstanceService   = new SingleInstanceService("FAP");
            registerProtocolService = new RegisterProtocolService();
        }
Ejemplo n.º 6
0
        public App()
        {
            if (!SingleInstanceService.Start())
            {
                Environment.Exit(0);
            }

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            ErrorProvider.Instance.Init();

            _exePath = System.IO.Path.GetFullPath(
                System.Environment.GetCommandLineArgs()[0]);

            ErrorProvider.Instance.LogInfo("Starting " + _exePath);

            Settings.CodeIDXSettings.UpgradeAll();

            Exit += App_Exit;
        }
Ejemplo n.º 7
0
        public App()
        {
            try
            {
#if DEBUG
                var identifier = $@"Global\{nameof(BilibiliLiveRecordDownLoader)}_Debug";
#else
                var identifier = $@"Global\{nameof(BilibiliLiveRecordDownLoader)}";
#endif
                _singleInstance = new(identifier);

                Directory.SetCurrentDirectory(Path.GetDirectoryName(Utils.Utils.GetExecutablePath()) !);

                DI.CreateLogger();
            }
            catch (Exception ex)
            {
                MessageBox.Show($@"WTF??? {ex}", nameof(BilibiliLiveRecordDownLoader), MessageBoxButton.OK, MessageBoxImage.Error);
                Environment.Exit(1);
            }
        }
Ejemplo n.º 8
0
        public async Task SingleFirstInstance_AnotherInstanceIsRunning_MessageIsReceived()
        {
            await _singleInstanceService.Start();

            var commands = new List <string>();

            _singleInstanceService.CommandsReceived += (o, e) => { commands.AddRange(e); };
            var singleInstanceService2 = new SingleInstanceService();

            await singleInstanceService2.Start();

            await singleInstanceService2.SignalFirstInstance(new List <string> {
                "Hello!"
            });

            await Task.Delay(1000);

            Assert.IsNotEmpty(commands);

            singleInstanceService2.Stop();
            _singleInstanceService.Stop();
        }
Ejemplo n.º 9
0
        public async Task SingleFirstInstance_SignalOtherInstanceTwoTimes_MessageIsReceivedTwoTimes()
        {
            await _singleInstanceService.Start();

            var commands = new List <string>();

            _singleInstanceService.CommandsReceived += (o, e) => { commands.AddRange(e); };

            var singleInstanceService2 = new SingleInstanceService();

            await singleInstanceService2.Start();

            await singleInstanceService2.SignalFirstInstance(new List <string>() { "Hello!" });

            await singleInstanceService2.SignalFirstInstance(new List <string>() { "Hello!" });

            await Task.Delay(1000);

            Assert.That(commands.Count == 2);

            singleInstanceService2.Stop();
            _singleInstanceService.Stop();
        }
Ejemplo n.º 10
0
        private static void Main(string[] args)
        {
            Directory.SetCurrentDirectory(Path.GetDirectoryName(Utils.GetExecutablePath()) ?? throw new InvalidOperationException());
            var identifier = $@"Global\{Controller.HttpRequest.UpdateChecker.Name}_{Directory.GetCurrentDirectory().GetClassicHashCode()}";

            using var singleInstance = new SingleInstanceService(identifier);
            if (!singleInstance.IsFirstInstance)
            {
                singleInstance.PassArgumentsToFirstInstance(args.Length == 0
                        ? args.Append(Constants.ParameterMultiplyInstance)
                        : args);
                return;
            }
            singleInstance.ArgumentsReceived.Subscribe(SingleInstance_ArgumentsReceived);

            var app = new Application
            {
                ShutdownMode = ShutdownMode.OnExplicitShutdown
            };

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
            app.Exit += App_Exit;

            Syncfusion.Licensing.SyncfusionLicenseProvider.RegisterLicense(@"##SyncfusionLicense##");

            Global.LoadConfig();

            I18NUtil.SetLanguage(Global.GuiConfig.LangName);
            ViewUtils.SetResource(app.Resources, @"../View/NotifyIconResources.xaml", 1);

            Global.Controller = new MainController();

            // Logging
            Logging.DefaultOut   = Console.Out;
            Logging.DefaultError = Console.Error;

            Utils.SetTls();

            Global.ViewController       = new MenuViewController(Global.Controller);
            SystemEvents.SessionEnding += Global.ViewController.Quit_Click;

            Global.Controller.Reload();
            if (Global.GuiConfig.IsDefaultConfig())
            {
                var res = MessageBox.Show(
                    $@"{I18NUtil.GetAppStringValue(@"DefaultConfigMessage")}{Environment.NewLine}{I18NUtil.GetAppStringValue(@"DefaultConfigQuestion")}",
                    Controller.HttpRequest.UpdateChecker.Name, MessageBoxButton.YesNo, MessageBoxImage.Question, MessageBoxResult.OK);
                switch (res)
                {
                case MessageBoxResult.Yes:
                {
                    Global.Controller.ShowConfigForm();
                    break;
                }

                case MessageBoxResult.No:
                {
                    Global.Controller.ShowSubscribeWindow();
                    break;
                }

                default:
                {
                    StopController();
                    return;
                }
                }
            }

            Reg.SetUrlProtocol(@"ssr");
            Reg.SetUrlProtocol(@"sub");

            singleInstance.ListenForArgumentsFromSuccessiveInstances();
            app.Run();
        }
Ejemplo n.º 11
0
 static SingleInstanceExtensions()
 {
     SingleInstanceTracker = SingleInstanceService.GetInstance();
 }
Ejemplo n.º 12
0
 public void Setup()
 {
     _singleInstanceService = new SingleInstanceService();
 }
Ejemplo n.º 13
0
 void App_Exit(object sender, ExitEventArgs e)
 {
     SingleInstanceService.Stop();
     ErrorProvider.Instance.LogInfo("Ending " + _exePath);
 }