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"); }
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); }
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(); } }
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; }