public virtual void CanCaptureAudio()
        {
            const int runs = 10;
            int       i    = 0;

            using (var waitHandle = new AutoResetEvent(false))
            {
                for (; i < runs; i++)
                {
                    _soundIn.DataAvailable += (s, e) =>
                    {
// ReSharper disable once AccessToDisposedClosure
                        waitHandle.Set();
                    };

                    _soundIn.Initialize();
                    Assert.AreEqual(RecordingState.Stopped, _soundIn.RecordingState);

                    _soundIn.Start();
                    Assert.AreEqual(RecordingState.Recording, _soundIn.RecordingState);

                    if (!waitHandle.WaitOne(Debugger.IsAttached ? Timeout.Infinite : 2000))
                    {
                        Assert.Fail("Timeout");
                    }

                    _soundIn.Stop();
                    Assert.AreEqual(RecordingState.Stopped, _soundIn.RecordingState);
                }
            }

            Assert.AreEqual(runs, i);
        }
Example #2
0
 public void Dispose()
 {
     wasapiCapture_.Stop();
     writer_.Dispose();
     stereoSource_.Dispose();
     wasapiCapture_.Dispose();
 }
Example #3
0
        private void Stop()
        {
            Running = false;


            if (_soundIn != null)
            {
                _soundIn.Stop();
                _soundIn.Dispose();
                _soundIn = null;
            }
            if (_source != null)
            {
                _source.Dispose();
                _source = null;
            }

            _disableTimer.Stop();
            _volumeTimer.Stop();

            _mayStop = false;
        }