Я пытаюсь реализовать простую игру в .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 работал лучше при инициализации из файла.
Ни одна из этих попыток не сработала.
Есть идеи?