static void Main(string[] args) { var pipeName = new SimpleStringPipeName( name: "Example", side: Side.Out); var bus = new NamedPipeBus(pipeName: pipeName); new ProcessBHost(bus); Console.WriteLine($"Process B Host Runing"); Console.WriteLine("type exit to close"); Console.WriteLine("type help for command list"); var exit = false; do { var cmd = Console.ReadLine(); if (string.IsNullOrWhiteSpace(cmd)) { continue; } switch (cmd.ToLower()) { case "exit": exit = true; break; case "ping": bus.Publish(new Ping()); break; case "help": case "?": Console.WriteLine("exit: exit program"); Console.WriteLine("ping: publish ping message"); Console.WriteLine("cls: Clear Screen"); break; case "cls": Console.Clear(); break; } } while (!exit); bus.Dispose(); }
private void ConnectToService() { try { //create bus with service... var pipeName = new SimpleStringPipeName( name: "gazugafanFingerpass", side: Side.Out ); bus = new NamedPipeBus(pipeName: pipeName); _busHandler = new BusHandler(bus, this); } catch (Exception) { MessageBox.Show("There was a problem connecting to the FingerPass Windows service. Maybe another user is logged on and using FingerPass already?", "FingerPass", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
private void DisconnectFromService() { try { if (bus != null) { if (_busHandler != null) { _busHandler = null; } bus.Dispose(); bus = null; } } catch (Exception) { } }
public void RecreateBusConnection() { //EventLog.WriteEntry("RecreateBusConnection"); if (bus != null) { //EventLog.WriteEntry("disposing existing bus"); bus.Dispose(); } //open bus with tray... var pipeName = new SimpleStringPipeName( name: "gazugafanFingerpass", side: Side.In ); bus = new NamedPipeBus(pipeName: pipeName); _busHandler = new BusHandler(bus, this); }
private void can_exchange_messages() { var timeout = TimeSpan.FromSeconds(3); var processADone = new ManualResetEventSlim(false); var processBDone = new ManualResetEventSlim(false); // Process A Simulation new Thread(() => { var pipeName = new SimpleStringPipeName( name: "UnitTest", side: Side.Out); var bus = new NamedPipeBus(pipeName: pipeName); var inHost = new TestHandler( handleStringContent: msg => { _logger.WriteLine($"[ProcessA] Received new message of type {msg.GetType().Name}: {msg.Content}"); }, handleTestMessage: msg => { _logger.WriteLine($"[ProcessA] Received new message of type {msg.GetType().Name}"); processADone.Set(); } ); bus.Subscribe(inHost); bus.Publish(new StringContentMessage("Message from In")); bus.Publish(new TestMessage()); }) { IsBackground = true } .Start(); // Process B Simulation new Thread(() => { var pipeName = new SimpleStringPipeName(name: "UnitTest"); var bus = new NamedPipeBus(pipeName: pipeName); var outHost = new TestHandler( handleStringContent: msg => { _logger.WriteLine($"[ProcessB] Received new message of type {msg.GetType().Name}: {msg.Content}"); }, handleTestMessage: msg => { _logger.WriteLine($"[ProcessB] Received new message of type {msg.GetType().Name}"); processBDone.Set(); } ); bus.Subscribe(outHost); bus.Publish(new StringContentMessage("Message from Out")); bus.Publish(new TestMessage()); }) { IsBackground = true } .Start(); processBDone.Wait(timeout: timeout); processADone.Wait(timeout: timeout); Assert.True( condition: processBDone.IsSet, userMessage: "Failed to receive message from 'ProcessA'" ); Assert.True( condition: processADone.IsSet, userMessage: "Failed to receive message from 'ProcessB'" ); }