То, что я пытаюсь сделать, это воспроизвести музыкальный файл на определенную продолжительность, а затем прекратить воспроизведение. Тем не менее, воспроизводится весь музыкальный файл. Я не могу использовать метод «PlaySync()», поскольку я не могу заблокировать поток.Проблема с воспроизведением при воспроизведении музыкального файла
0
A
ответ
1
может быть что-то вроде этого
Task.Factory.StartNew(() =>
{
var player = new SoundPlayer();
player.SoundLocation = "myfile";
player.Play();
Thread.Sleep(duration)
player.Stop();
});
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();
}
ли 'player' имеет свой собственный метод' Stop'? – sll
Использование встроенного. –
Возможно, ваш стоп-звонок приходит до того, как звук уже начался. Обходным путем было бы запустить ваш таймер в начале воспроизведения, а не по запросу «играть». – jv42