Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows Media Player在新线程上无法正常工作_C#_Wpf_Multithreading - Fatal编程技术网

C# Windows Media Player在新线程上无法正常工作

C# Windows Media Player在新线程上无法正常工作,c#,wpf,multithreading,C#,Wpf,Multithreading,我上了一堂音乐课,内容如下: public class Music { public void StartMusic() { WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer(); wplayer.URL = "Resources/music3.MID"; wplayer.controls.play();

我上了一堂音乐课,内容如下:

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();
}

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

请将此标记为问题的答案。是的,但stackoverflow不允许我在明天之前将此标记为答案。