节目与NAudio冻结

时间:2013-04-11 17:06:43

标签: c# naudio

这可能非常简单,但我有一个WPF应用程序,它有一个按钮,一个文本区域和另一个按钮。如果我单击按钮1,则程序会创建一个名为player的WaveOutEvent并播放音频文件。但是,一旦它开始播放,我就无法做任何其他事情甚至关闭表格(并且不能在文本区域中输入)。是否可以在后台播放文件?知道如何解决这个问题吗?对不起,我是C#的新手。这是一些代码:

  private void button1_Click_1(object sender, RoutedEventArgs e)
    {
        Program p = new Program(textBox1.Text); 
        p.Tempo = float.Parse(textBox2.Text);
        label2.Content = p.totalTime;
    }
  //assuming this has been called after initialization
  public void playAudio(string filename)
    {
        WaveStream rdr;

        if (filename.EndsWith(".aiff"))
        {
            rdr = new AiffFileReader(filename);
        }
        else if (filename.EndsWith(".mp3"))
        {
            rdr = new Mp3FileReader(filename);
        }
        else if (filename.EndsWith(".wav"))
        {
            rdr = new WaveFileReader(filename);
        }
        else
        {
            //System.Windows.MessageBox.Show("File not supported.");
            rdr = new Mp3FileReader(filename);
        }

        volumeStream = new WaveChannel32(rdr);
        player = new WaveOutEvent();
        player.Init(volumeStream);
        format = volumeStream.WaveFormat;
        totalTime = volumeStream.TotalTime;
        inputProvider = new AdvancedBufferedWaveProvider(format);
        player.Init(inputProvider);
        player.Play(); //freezes application after starting to play
        //processAudio();
    }

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试使用Background Worker播放音频。