public static void SetBackground( this IWavePlayer player) { var fi = player.GetType().GetField( "playThread", BindingFlags.Instance | BindingFlags.NonPublic); if (fi != null) { var thread = fi.GetValue(player) as Thread; if (thread != null) { thread.IsBackground = true; } } }
/// <summary> /// Initialize the NAudio framework /// </summary> private void InitializeNAudioLibrary() { try { m_latency = Properties.Settings.Default.Latency; string soundOutput; m_logger.Info("OS Info: " + Environment.OSVersion.ToString()); if (Environment.OSVersion.Version.Major < 6) soundOutput = "WaveOut"; // XP else soundOutput = "WasapiOut"; // Vista/7 // Properties.Settings.Default.SoundOutput; m_logger.Info("Wave Output Device that was requested: {0}", soundOutput); // Set the wave output device based on the configuration setting switch (soundOutput) { case "WasapiOut": m_waveOutDevice = new WasapiOut(global::NAudio.CoreAudioApi.AudioClientShareMode.Shared, m_latency); break; case "DirectSound": m_waveOutDevice = new DirectSoundOut(m_latency); break; default: case "WaveOut": m_waveOutDevice = new WaveOut(); break; } m_logger.Info("Wave Output Device that is actually being used: {0}", m_waveOutDevice.GetType().ToString()); } catch (Exception driverCreateException) { m_logger.ErrorException("NAudio Driver Creation Failed", driverCreateException); throw driverCreateException; } }