/// <summary>
        /// EventFunction that adds upnp sink and subscribes to sink events
        /// </summary>
        /// <param name="e">The sink device that is discovered</param>
        /// <param name="s"></param>
        public void getUPnPSink(ISinkFunctions e, EventArgs s)
        {
            _UPnPSink = e;
            _sliderTimer.Start();

            _UPnPSink.getIPEvent += UpnPSinkOnGetIpEvent;
            _UPnPSink.getPositionEvent += UpnPSinkOnGetPositionEvent;
            _UPnPSink.getVolEvent += UpnPSinkOnGetVolEvent;
            _UPnPSink.transportStateEvent += UpnPSinkOnTransportStateEvent;

            Dispatcher.BeginInvoke(new Action(() =>
                {
                    btnNext.IsEnabled = true;
                    btnPrevious.IsEnabled = true;
                    btnPlayPause.IsEnabled = true;
                    sliderTime.IsEnabled = true;
                    sliderVol.IsEnabled = true;
                    btnSync.IsEnabled = true;
                }));
        }
 /// <summary>
 /// Terminates the UPnP connection and tries to make a new one
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void BtnRescan_OnClick(object sender, RoutedEventArgs e)
 {
     _UPnPSetup = null;
     _UPnPSink = null;
     _UPnPSource = null;
     GreyoutButtons();
     _UPnPSetup = new UPnP_Setup();
     subscribe();
     _UPnPSetup.StartServices();
 }
 public void getUPnPSink(UPnP_SinkFunctions e, EventArgs s)
 {
     _UPnPSink = e;
     _UPnPSink.getVolEvent += getVolEvent;
     _UPnPSink.getPositionEvent += getPosEvent;
     _UPnPSink.transportStateEvent += UpnPSinkOnTransportStateEvent;
     _UPnPSink.GetVolume();
     _UPnPSink.GetPosition();
 }