これはかなり単純かもしれませんが、ボタン、テキスト領域、および別のボタンを持つ 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();
}
ご協力いただきありがとうございます!