Почему SoundPlayer периодически зависает при воспроизведении? - PullRequest
1 голос
/ 30 ноября 2010

У меня есть приложение WPF, в котором я использую SoundPlayer для воспроизведения нескольких коротких звуков, таких как щелчки клавиатуры.Иногда, казалось бы, наугад, звуки перестают играть.Когда я ухожу от страницы, звуки будут воспроизводиться одновременно в одном визгливом воспроизведении.

Мой вопрос: есть ли очевидные причины, по которым это может произойти?

Я пробовал несколько вещей, но из-за того, что я не могу последовательно воспроизвести проблему, трудно найти причину.Звуки используются во всем приложении, поэтому я загружаю их в app.xaml.cs в статическую коллекцию приложения.Я звоню SoundPlayer.Load(), чтобы сразу убедиться, что они загружены в память.

Как я уже сказал, это никогда не перестает работать полностью.Воспроизведение, кажется, накапливается до перехода на другую страницу, где все они воспроизводятся одновременно.

Еще одна вещь, которая может оказать влияние, - это отображение в приложении канала веб-камеры.Канал веб-камеры загружается с использованием библиотеки DirectShow.NET.Я не уверен, что загрузка графиков может оказать какое-либо негативное влияние на воспроизведение звука.

1 Ответ

0 голосов
/ 30 ноября 2010

Полагаю, веб-камера обновляет элемент пользовательского интерфейса, в результате чего поток пользовательского интерфейса будет довольно занят, в этом случае вы, вероятно, не захотите использовать SoundPlayer.PlaySync() или SoundPlayer.Load, которые блокируют текущий поток.

Вместо этого попробуйте SoundPlayer.LoadAsync() и SoundPlayer.Play(), которые используют отдельный поток.

...