2011-12-16 2 views
0

То, что я пытаюсь сделать, это воспроизвести музыкальный файл на определенную продолжительность, а затем прекратить воспроизведение. Тем не менее, воспроизводится весь музыкальный файл. Я не могу использовать метод «PlaySync()», поскольку я не могу заблокировать поток.Проблема с воспроизведением при воспроизведении музыкального файла

+1

ли 'player' имеет свой собственный метод' Stop'? – sll

+0

Использование встроенного. –

+0

Возможно, ваш стоп-звонок приходит до того, как звук уже начался. Обходным путем было бы запустить ваш таймер в начале воспроизведения, а не по запросу «играть». – jv42

ответ

1

может быть что-то вроде этого

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

Просто интересоваться, почему downvoted? – sll

+0

Спасибо, это сработало! –

+0

+1 это выглядит интересной возможностью, почему downvote? (Я тоже поддержал). – jv42

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