Esempio n. 1
0
 public MidiInterface(
     IOptions <Options> options,
     ILogger <MidiInterface> logger,
     IMidiMessageSerializer serializer)
 {
     this.logger               = logger;
     this.serializer           = serializer;
     Messages                  = Observable.FromEventPattern <OnReceivedMidiMessageDelegate, MidiMessage>(
         h => MessageReceived += h,
         h => MessageReceived -= h)
                                 .Select(o => o.EventArgs);
     receiver = new Thread(ReceiverThread);
     port     = new TeVirtualMidi(options.Value.PortName);
     running  = true;
     receiver.Start();
 }
Esempio n. 2
0
 public void Dispose()
 {
     if (running)
     {
         running = false;
         // Shutting down the port is the only way to unlock
         // the reading call in receiver thread.
         port.Shutdown();
         receiver.Join();
     }
     if (port != null)
     {
         port.Dispose();
         port = null;
     }
 }