public void Close() { m_Finished = true; WaveInRecorder.ThrowOnError(WaveNative.waveInReset(m_WaveIn)); m_Thread.Join(); m_Thread = null; m_DoneProc = null; buffer1.WaitFor(); buffer2.WaitFor(); buffer1.Close(); buffer2.Close(); WaveInRecorder.ThrowOnError(WaveNative.waveInClose(m_WaveIn)); m_WaveIn = IntPtr.Zero; }