public void NamedPipeManager()
        {
            string result = string.Empty;

            var manager = new NamedPipeManager("MarkdownMonster_Tests");

            manager.ReceiveString += (s) =>
            {
                Console.WriteLine("Received results: " + s);
                result += s + "\r\n";
            };

            manager.StartServer();

            Thread.Sleep(200);  // allow thread to spin up

            var manager2 = new NamedPipeManager("MarkdownMonster_Tests");

            manager2.Write("Hello World");
            manager2.Write("Goodbye World");

            manager.StopServer();

            Thread.Sleep(200);

            Assert.IsFalse(string.IsNullOrEmpty(result), "Result shouldn't be null");
        }
示例#2
0
        public static bool SingleInstanceCheck()
        {
            bool isFirstOne = true;

            if (bUseSingleInstance)
            {
                bool isOnlyInstance = false;
                Mutex = new Mutex(true, AppName, out isOnlyInstance);
                if (!isOnlyInstance)
                {
                    isFirstOne = false;
                    string filesToOpen = " ";
                    var    args        = Environment.GetCommandLineArgs();
                    if (args != null && args.Length > 1)
                    {
                        StringBuilder sb = new StringBuilder();
                        for (int i = 1; i < args.Length; i++)
                        {
                            sb.AppendLine(args[i]);
                        }
                        filesToOpen = sb.ToString();
                    }

                    var manager = new NamedPipeManager(AppPipeName);

                    // send the message
                    manager.Write(filesToOpen);

                    ExitThisApp();
                }
            }
            return(isFirstOne);
        }
示例#3
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            try {
                // set language
                Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("zh-CN");

                string root = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]);
                Environment.CurrentDirectory = root;

                pipe = new NamedPipeManager(Name);
                if (!pipe.SingleServer())
                {
                    if (e.Args.Length == 1)
                    {
                        pipe.Write(e.Args[0]);
                    }
                    Environment.Exit(0);
                }

                pipe.ReceiveString += pipe_ReceiveString;
                pipe.StartServer();

                var win = new UserWindow();
                win.Closed += win_Closed;
                win.Show();
            }
            catch (Exception _e) {
                MessageBox.Show(_e.Message);
                Application.Current.Shutdown();
                pipe.StopServer();
            }
        }
示例#4
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            if (ApplicationSettings.AppSetting.Default.SingleInstanceApplication)
            {
                Mutex = new Mutex(true, CURRENT_NAMED_PIPE, out bool Is);
                if (!Is)
                {
                    NamedPipeManager.Write(CURRENT_NAMED_PIPE, e.Args);
                    Shutdown(0);
                    return;
                }

                NamedPipeManager = new NamedPipeManager(CURRENT_NAMED_PIPE);
                NamedPipeManager.ReceiveString += NamedPipeManager_ReceiveString;
                NamedPipeManager.Start();
            }

            MainWindowVM = new MainWindowVM();
            if (e.Args.Length > 0)
            {
                MainWindowVM.OpenFile(e.Args[0]);
            }

            MainWindow = new MainWindow()
            {
                DataContext = MainWindowVM
            };
            MainWindow.Show();
        }
        public void OpenFilesInRunningApplication()
        {
            var manager = new NamedPipeManager("MarkdownMonster");


            StringBuilder sb = new StringBuilder();

            sb.AppendLine("c:\\temp\\test.txt");
            sb.AppendLine("c:\\temp\\davidrosenhaft.prg");

            Console.WriteLine(sb);

            Assert.IsTrue(manager.Write(sb.ToString()));
        }
		private TangerineSingleInstanceKeeper(string[] args)
		{
			bool isOnlyInstance;
			mutex = new Mutex(true, MutexName, out isOnlyInstance);
			if (!isOnlyInstance) {
				if (args.Length > 0) {
					var stream = new MemoryStream();
					TangerineYuzu.Instance.Value.WriteObject(string.Empty, stream, args, Serialization.Format.JSON);
					var serializedArgs = Encoding.UTF8.GetString(stream.ToArray());
					var manager = new NamedPipeManager(PipeServerName);
					manager.Write(serializedArgs);
				}

				System.Environment.Exit(0);
			}

			pipeManager = new NamedPipeManager(PipeServerName);
			pipeManager.StartServer();
			pipeManager.ReceiveString += OnAnotherInstanceArgsRecieved;
		}