public WaveIn waveSource = null; public WaveFileWriter waveFile = null; private void StartBtn_Click(object sender, EventArgs e) { StartBtn.Enabled = false; StopBtn.Enabled = true; waveSource = new WaveIn(); waveSource.WaveFormat = new WaveFormat(44100, 1); waveSource.DataAvailable += new EventHandler(waveSource_DataAvailable); waveSource.RecordingStopped += new EventHandler(waveSource_RecordingStopped); waveFile = new WaveFileWriter(@"C:\Temp\Test0001.wav", waveSource.WaveFormat); waveSource.StartRecording(); } private void StopBtn_Click(object sender, EventArgs e) { StopBtn.Enabled = false; waveSource.StopRecording(); } void waveSource_DataAvailable(object sender, WaveInEventArgs e) { if (waveFile != null) { waveFile.Write(e.Buffer, 0, e.BytesRecorded); waveFile.Flush(); } } void waveSource_RecordingStopped(object sender, StoppedEventArgs e) { if (waveSource != null) { waveSource.Dispose(); waveSource = null; } if (waveFile != null) { waveFile.Dispose(); waveFile = null; } StartBtn.Enabled = true; }