naudio DataAvailable编译错误

时间:2013-04-03 17:51:40

标签: c# vb.net naudio

我想了解下面这段代码的原因( waveInStream.DataAvailable ):

Private Sub cmbRecord_Click(sender As Object, e As EventArgs)
    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

        waveInStream = New WaveIn(44100, 2)
        writer = New WaveFileWriter(outputFilename, waveInStream.WaveFormat)
        waveInStream.DataAvailable += New EventHandler(Of WaveInEventArgs)(AddressOf waveInStream_DataAvailable)
        waveInStream.StartRecording()


        ' Just controling the objects on the screen.
        cmbRecord.Enabled = False
        cmbStop.Enabled = True
    End If
End Sub

给我错误:

Error 1 'Public Event DataAvailable(sender As Object, e As NAudio.Wave.WaveInEventArgs)'
is an event, and cannot be called directly. Use a 'RaiseEvent' statement to raise an event.

我正在使用示例HERE

将上述代码从c#转换为VB.net

转换为VB的c#是:

private void cmbRecord_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;

            waveInStream = new WaveIn(44100,2);
            writer = new WaveFileWriter(outputFilename, waveInStream.WaveFormat);

            waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
            waveInStream.StartRecording();


            // Just controling the objects on the screen.
            cmbRecord.Enabled = false;
            cmbStop.Enabled = true;
        }
    }

任何帮助都会很棒!

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试替换

waveInStream.DataAvailable += New EventHandler(Of WaveInEventArgs)(AddressOf waveInStream_DataAvailable)

AddHandler waveInStream.DataAvailable, AddressOf waveInStream_DataAvailable