2013-04-03 2 views
0

У меня возникли проблемы с вводом имени wav-файла, а nAudio принимает его как StreamMixToDisk.Ошибка Naudio StreamMixToDisk

Public Sub SetupAudio() 
    'Setup the Mixer 
    mixer = New WaveMixerStream32() 
    mixer.AutoStop = False 

    If waveOutDevice Is Nothing Then 
     'waveOutDevice = new AsioOut(); 

     waveOutDevice = New WaveOut(0, 300, False) 

     waveOutDevice.Init(mixer) 
     waveOutDevice.Play() 
    End If 
End Sub 

Private Sub cmbRecordDirect_Click(sender As Object, e As EventArgs) Handles cmbRecord.Click 
    Dim saveFileDialog As New SaveFileDialog() 
    saveFileDialog.Title = "Select output file:" 
    saveFileDialog.Filter = "WAV Files (*.wav)|*.wav" 
    saveFileDialog.FileName = outputFilename 

    If saveFileDialog.ShowDialog() = DialogResult.OK Then 
     outputFilename = saveFileDialog.FileName 
     mixer.StreamMixToDisk(outputFilename) 
     mixer.StartStreamingToDisk() 
     cmbRecordDirect.Enabled = False 
     cmbStopDirect.Enabled = True 
     cmbPauseDirect.Enabled = True 
    End If 
End Sub 

имя_выходного_файла является C: \ test.wav, но как только он попадает в mixer.StreamMixToDisk (имя_выходного_файла) имеет ошибку, говоря:

A first chance exception of type 'System.NullReferenceException' 
Object reference not set to an instance of an object. 

C# код который был преобразован в VB.net выше:

private void cmbRecordDirect_Click(object sender, EventArgs e) 
    { 
     SaveFileDialog saveFileDialog = new SaveFileDialog(); 
     saveFileDialog.Title = "Select output file:"; 
     saveFileDialog.Filter = "WAV Files (*.wav)|*.wav"; 
     saveFileDialog.FileName = outputFilename; 
     if (saveFileDialog.ShowDialog() == DialogResult.OK) 
     { 
      outputFilename = saveFileDialog.FileName; 
      mixer.StreamMixToDisk(outputFilename); 
      mixer.StartStreamingToDisk(); 
      cmbRecordDirect.Enabled = false; 
      cmbStopDirect.Enabled = true; 
      cmbPauseDirect.Enabled = true; 
     } 
    } 

Что может вызвать эту ошибку?

+1

Похоже, что 'миксер' не был создан нигде и поэтому является нулевым. Если 'mixer' сам не является нулевым, то объект в методе 'StreamMixToDisk' есть. – keyboardP

ответ

0

Я не зовет SetupAudio() в Form_Load начать с смеситель.