System.Media.SoundPlayer.Play () замораживает графический интерфейс - PullRequest
1 голос
/ 26 августа 2010

Я пытаюсь реализовать простую игру в .NET с C #. Есть шар, отскакивающий от объектов, и когда он отскакивает, я играю звук асинхронно, используя System.Media:SoundPlayer. Проблема в том, что большую часть времени (не всегда) мяч замирает во время удара, пока играет звук.

Это происходит в Windows XP, но не в Windows 7. Я использую .NET 3.5. И самое странное, что проблема исчезнет, ​​если я открою приложение Windows Media Player и воспроизведу несколько секунд mp3.

Вот код, где я инициализирую объект SoundPlayer:

System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream s = a.GetManifestResourceStream("Game.Resources.GameBounce.wav");
_playerBounce = new System.Media.SoundPlayer(s);
_playerBounce.Load();

... и когда мяч попадает в препятствие, эта строка называется: _playerBounce.Play ();

Я также пробовал "Попытку № 4" в этом посте: Как использовать System.Media.SoundPlayer для асинхронного воспроизведения звукового файла?

Другая отчаянная попытка, основанная на некоторых советах, которые я нашел где-то в сети, состояла в том, чтобы сохранить звуковой поток в файл, чтобы SoundPlayer работал лучше при инициализации из файла.

Ни одна из этих попыток не сработала.

Есть идеи?

...