2010-11-30 7 views
1

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

Вопрос в том, есть ли какие-либо очевидные причины, почему это произойдет?

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

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

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

ответ

0

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

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

+0

Я только что попробовал, и вы также поняли, что я злоупотребляю «SoundPlayer.Load()» в сочетании с `SoundPlayer.Play()` - один для синхронизации другого асинхронного. Я уже неосознанно играл в них в отдельном потоке. Добавление `SoundPlayer.LoadAsync()` не устранило проблему. Я сделал эксперимент для загрузки и воспроизведения звуков синхронно. Это фактически заставило приложение зависать и не реагировать, когда возникла проблема с звуком, по-видимому, потому, что поток сейчас что-то ждет и отказывается продолжать. – Sio 2010-11-30 19:56:09

Смежные вопросы