private void CreateFFTAggregator(IWaveSource source) { if (_fftaggregator != null) { _fftaggregator.FFTCalculated -= OnNewData; _fftaggregator = null; } _fftaggregator = new FFTAggregator(source); _fftaggregator.FFTCalculated += OnNewData; BaseStream = _fftaggregator; }
public void ThrowsInvalidCallerThread() { bool flag = true; foreach (var soundOut in GetSoundOuts()) { var source = new DSP.FFTAggregator(new SineGenerator().ToWaveSource(16)); source.FFTCalculated += (s, e) => { try { soundOut.Pause(); //hopefully throws exception } catch (InvalidOperationException) { Debug.WriteLine("Invalid behaviour in {0}.", soundOut.GetType().FullName); flag &= false; } }; soundOut.Initialize(source); soundOut.Play(); Thread.Sleep(200); soundOut.Stop(); soundOut.Dispose(); } if (!flag) throw new InvalidOperationException("InvalidOperationException was thrown inside audio render queue"); }