static void StartServer() { Task.Factory.StartNew(() => { var server = new NamedPipeServerStream(PIPE_NAME); while (true) { server.WaitForConnection(); StreamReader reader = new StreamReader(server); StreamWriter writer = new StreamWriter(server); string line = ""; while ((line = reader.ReadLine()) != null) { App.Current.Dispatcher.Invoke(() => { AddTorrentView win = new AddTorrentView(); win.Show(line); win.Activate(); }, System.Windows.Threading.DispatcherPriority.Send); } server.Disconnect(); } }); }
protected override void OnStartup(StartupEventArgs e) { string[] args = Environment.GetCommandLineArgs(); //Enforce Single Instance bool aIsNewInstance = false; _Mutex = new Mutex(true, "TransmissionFluid", out aIsNewInstance); if (!aIsNewInstance) { if (args.Length > 0) { //Named Pipe Client using (var client = new NamedPipeClientStream(PIPE_NAME)) { client.Connect(); StreamReader reader = new StreamReader(client); StreamWriter writer = new StreamWriter(client); writer.WriteLine(args[1]); writer.Flush(); client.Close(); } } //Shutdown this instance App.Current.Shutdown(); } StartServer(); if (args.Length > 1) { AddTorrentView win = new AddTorrentView(); win.Show(args[1]); win.Activate(); } SettingsManager.Instance.LoadSettings(); //TODO: Add RPC Session DownloadDir to list. string defaultDir = @"/home/"; if (!SettingsManager.Instance.Settings.RecentFolders.Contains(defaultDir)) { SettingsManager.Instance.Settings.RecentFolders.Add(defaultDir); } base.OnStartup(e); }