這可能很簡單,但我有一個WPF應用程序,它有一個按鈕,一個文本區域和另一個按鈕。如果我點擊按鈕1,那麼程序會創建一個名爲player的WaveOutEvent並播放音頻文件。但是,一旦開始播放,我什麼都不能做,甚至關閉表單(並且無法輸入文本區域)。是否有可能在後臺播放文件?任何想法如何我可以解決這個問題?對不起,我是C#的新手。這裏有一些代碼:程序與NAudio凍結
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();
}
感謝您的幫助!
AdvancedBufferedWaveProvider是做什麼的?你有沒有試過在Visual Studio中打破目前發生的事情? – 2013-04-12 07:13:17