播放音乐文件时的线程问题

时间:2011-12-16 09:31:30

标签: c# .net multithreading soundplayer

我要做的是播放指定时间段的音乐文件,然后停止播放。但是,正在播放整个音乐文件。我无法使用'PlaySync()'方法,因为我无法阻止线程。

2 个答案:

答案 0 :(得分:2)

也许是这样的

 Task.Factory.StartNew(() =>
   {
    var player = new SoundPlayer();
    player.SoundLocation = "myfile";
    player.Play();
    Thread.Sleep(duration)
    player.Stop();
   });

答案 1 :(得分:2)

您不必自己生成新线程,因为SoundPlayer.Play方法本身就是这样做。

试试这个版本:

public void Play() 
    { 
        player = new SoundPlayer(); 
        player.SoundLocation = "myfile"; 
        Timer timer = new Timer(); 
        timer.Tick += (s,e) => 
            {
                player.Stop();
                timer.Stop();
            };
        timer.Interval = duration; 
        player.Play();
        timer.Start(); 
    }