У меня есть приложение WPF, в котором я использую SoundPlayer
для воспроизведения нескольких коротких звуков, таких как щелчки клавиатуры. Иногда, казалось бы, случайным образом, звуки перестают играть. Когда я перехожу от страницы, звуки будут воспроизводиться сразу в одном визговом воспроизведении.Почему SoundPlayer прерывается при воспроизведении?
Вопрос в том, есть ли какие-либо очевидные причины, почему это произойдет?
Я пробовал несколько вещей, но поскольку я не могу последовательно воспроизводить проблему, трудно найти причину. Звуки используются во всем приложении, поэтому я загружаю их в app.xaml.cs в статическую коллекцию с областью действия приложения. Я звоню SoundPlayer.Load()
, чтобы убедиться, что они сразу загружены в память.
Как я уже сказал, это никогда не прекращает работать полностью. Кажется, что воспроизведение назад накапливается до перехода на другую страницу, где все они играют одновременно.
Еще одна вещь, которая может повлиять на то, что я показываю подачу веб-камеры в приложении. Канал веб-камеры загружается с использованием библиотеки DirectShow.NET. Я не уверен, что загрузка графиков может негативно повлиять на воспроизведение звука.
Я только что попробовал, и вы также поняли, что я злоупотребляю «SoundPlayer.Load()» в сочетании с `SoundPlayer.Play()` - один для синхронизации другого асинхронного. Я уже неосознанно играл в них в отдельном потоке. Добавление `SoundPlayer.LoadAsync()` не устранило проблему. Я сделал эксперимент для загрузки и воспроизведения звуков синхронно. Это фактически заставило приложение зависать и не реагировать, когда возникла проблема с звуком, по-видимому, потому, что поток сейчас что-то ждет и отказывается продолжать. – Sio 2010-11-30 19:56:09