2010-12-13 60 views
-2

我希望下面的代码可以播放位于与.exe相同的目录中的Fireball.wav文件。.NET SoundPlayer问题

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

我相信我设置了错误的文件路径。

+0

是的,你没有实际使用的路径。 OpenFileDialog.RestoreDirectory往往是相关的。 – 2010-12-13 22:41:34

+2

-1这个问题与这一个不同:http://stackoverflow.com/questions/4433834甚至这一个:http://stackoverflow.com/questions/4405477 ???我们是否应该继续猜测,直到找出Fireball.wav所在的文件夹?或者你想在网络应用程序中这样做,而不是问得很对吗? – 2010-12-13 22:53:11

+0

也是,这是一个.NET SoundPlayer问题,而不是C#SoundPlayer问题。 – 2010-12-15 18:59:14

回答

3

你可以做这样的事情:

var path = Path.Combine(
       Path.GetDirectoryName(Application.ExecutablePath) 
      ,"Fireball.wav"); 
SoundPlayer simpleSound = new SoundPlayer(path); 
simpleSound.Play(); 
+3

+1。让我们满意Path.Combine() – 2010-12-13 22:41:59

+0

OK,添加Path.Combine()。 – 2010-12-13 22:50:26

+0

这是好的,但假定该文件对应用程序是本地的。请检查我对OP和链接的评论。让我想知道OP是否在Web世界中的相关文件夹和桌面应用程序中的路径之间产生混淆? – 2010-12-13 22:57:05

0

使用相对路径没有指定基本路径(即相对于当前目录)通常是一个坏主意。
我能想到的一个常见异常是作为命令行参数传入应用程序的相对路径。

特别是当前目录与应用程序目录不相同。它可以是启动时的任何目录,通用对话框(取决于它们的标志)可以改变它。此外,它是每个进程而不是每个线程变量,所以另一个线程可能随时更改它。

所以我强烈建议访问之前创建从你的相对路径绝对路径(见狗耳朵对如何做到这一点后)