SoundPlayer действительно довольно тусклый, но это все, что поставляется с .NET 2.0. Вместо этого попробуйте мой плеер (на основе этой статьи ), который использует MCI для воспроизведения звуков:
http://pastebin.com/aVDWBJ45
Вы можете использовать другие аудиокодеки (например, MP3), и вам нужно только загрузить файл один раз (и не каждый раз, когда вы атакуете, что вызывает задержку). И вы можете воспроизводить звуки асинхронно, не создавая дополнительных потоков.
Это действительно удобно. Просто создайте новый QueuedSamplesPlayer
с общим аргументом того, что вы хотите идентифицировать звуки (например, enum
, string
или int
). Используйте метод AddSample
для загрузки всех ваших звуков при запуске. Затем используйте Play
или PlayAsync
, чтобы воспроизвести файл синхронно или асинхронно, соответственно.
Вы можете позвонить PlayAsync
несколько раз, и звуки будут воспроизводиться по порядку, один за другим (без блокировки вашей текущей нити). Вы даже можете позвонить PlayAsync
во время воспроизведения звука, и он будет добавлен в очередь воспроизведения звука. Когда все звуки закончатся, будет выдано событие QueueEmpty.
Этот плеер был протестирован на Windows XP, Vista и 7.