.NET SoundPlayer QUestion - PullRequest
       1

.NET SoundPlayer QUestion

0 голосов
/ 14 декабря 2010

Я надеялся, что приведенный ниже код воспроизведет файл Fireball.wav, расположенный в том же каталоге, что и .exe.

 SoundPlayer simpleSound = new SoundPlayer(@"Fireball.wav");
 simpleSound.Play();

Мне кажется, я настраиваю неправильный путь к файлу.

Ответы [ 2 ]

3 голосов
/ 14 декабря 2010

Вы можете сделать что-то вроде этого:

var path = Path.Combine(
              Path.GetDirectoryName(Application.ExecutablePath) 
             ,"Fireball.wav");
SoundPlayer simpleSound = new SoundPlayer(path);
simpleSound.Play();
0 голосов
/ 14 декабря 2010

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

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

Поэтому я настоятельно рекомендую создать абсолютный путь из вашего относительного пути перед тем, как получить к нему доступ (см. Статью «Собачьи уши», как это сделать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...