Windows Media Player在新线程上无法正常运行

时间:2012-10-18 04:03:34

标签: c# wpf multithreading

我制作了一个音乐课程如下:

public class Music
{
    public void StartMusic()
    {                        
        WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
        wplayer.URL = "Resources/music3.MID";
        wplayer.controls.play();                            
    }
}

在主屏幕上,我按如下方式开始一个新线程:

Music music = new Music();
thread = new Thread( new ThreadStart(music.StartMusic));            
thread.Start();

现在,音乐在启动屏幕时播放,但问题是,只要我在UI上进行交互,单击按钮或扩展器,音乐线程就会停止。有趣的是,如果我使用SoundPlayer而不是MusicPlayer,一切正常。以下是SoundPlayer的代码:

public void StartMusic()
{
    SoundPlayer sound = new SoundPlayer("Resources/music1.wav");
    sound.PlayLooping();
}

1 个答案:

答案 0 :(得分:2)

我已经通过在startMusic()方法之外创建WindowsMediaPlayer对象解决了这个问题。这样一个愚蠢的错误。