Windows Media Player オーディオの BackgroundWorker プロセスをセットアップするのに助けが必要です。メイン スレッドからではなく、BackgroundWorker から直接オーディオ (WMP) を実行する必要があり、そのバックグラウンド プロセスはオーディオ ファイルの最後まで開いたままにする必要がありますが、PLAY でオーディオが正常に再生され始めても、BackgroundWorker は停止します。 、したがって、すでに閉じられているため、オーディオが実際にその2番目の Thread または backgroundWorker で再生されているとは思いません。
私が持っている質問は、曲の終わりまで開かれたままになる backgroundWorker から Windows Media Player (WMPLib) を使用してこのオーディオ ファイルを再生するにはどうすればよいかということです。
using WMPLib;
namespace mediaplayer
{
public partial class MainWindow : Window
{
BackgroundWorker m_audioProcessingWorker;
public MainWindow()
{
InitializeComponent();
}
string filename = @"C:\audio\song1.mp3"
private void button_play_Click(object sender, EventArgs e)
{
// Create the Audio Processing Worker (Thread)
m_audioProcessingWorker = new BackgroundWorker();
m_audioProcessingWorker.DoWork += new DoWorkEventHandler(audioProcessingWorker_DoWork);
m_audioProcessingWorker.RunWorkerAsync();
m_audioProcessingWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(audioProcessingWorker_Completed);
}
private void audioProcessingWorker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
axWindowsMediaPlayer1.URL = filename;
axWindowsMediaPlayer1.Ctlcontrols.play();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void audioProcessingWorker_Completed(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Audio is finished");
}
private void button_stop_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
m_audioProcessingWorker.CancelAsync();
}
private void button_pause_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.pause();
}
}
}
ありがとう。