private void CleanupResources() { if (_directSoundNotify != null) { _directSoundNotify.Dispose(); _directSoundNotify = null; } if (_secondaryBuffer != null) { _secondaryBuffer.Stop(); _secondaryBuffer.Dispose(); _secondaryBuffer = null; } if (_primaryBuffer != null) { _primaryBuffer.Stop(); _primaryBuffer.Dispose(); _primaryBuffer = null; } if (_directSound != null) { _directSound.Dispose(); _directSound = null; } _isInitialized = false; }
public void Dispose() { if (_wavePlayThread == null) { return; } try { _isFinished = true; Thread.MemoryBarrier(); _fillEvent.Set(); _cancelEvent.Set(); _wavePlayThread.Join(); if (_soundBuffer != null) { if (_soundBuffer.Status == DSBSTATUS.PLAYING) { _soundBuffer.Stop(); } _soundBuffer.Dispose(); } if (_device != null) { _device.Dispose(); } if (_fillEvent != null) { _fillEvent.Dispose(); } if (_frameEvent != null) { _frameEvent.Dispose(); } if (_cancelEvent != null) { _cancelEvent.Dispose(); } } finally { _wavePlayThread = null; } }