Net/Wpf 一个奇葩的不能再奇葩得问题了

sophy520eangel 2013-05-22 02:44:30
问题是这样的
我的程序中有一段这样的代码,是用来判断在程序当前运行的目录下面是否存在程序P,如果存在那么启动:

if (!System.IO.File.Exists("Sl.exe")) { //判断程序运行目录下是否存在Sl程序
//to do...
return;
}


这段代码是没有什么错误的,现在我的程序有个播放器Player,运行我的MainWindow,然后执行上面那段代码没有问题,Sl.exe成功启动了

接下来,我用打开一个player(在mainwindow中,而非独立程序)然后我打开一个媒体文件~ 然后我在执行上面那段代码,奇迹发生了,奇葩的事情也发生了
上面那段代码既然执行到了//to do那个里去了,要知道到我的Sl.exe程序可是一直都存在的哈~ 可是他既然跑到括号里面去执行了,既然判断结果会是我的Sl。exe程序不存在~

求解哈~ 虽然有很多替代方案,但是我还是很想知道这是为什么,这根我打开一个媒体文件有关系吗? 还是说我打开一个媒体文件,System.IO.File.Exists判断时候的目录就切换到了我打开媒体文件的所在目录???
...全文
75 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你可以写代码来验证一下自己的想法,看是不是跟Environment.CurrentDirectory相关.
  • 打赏
  • 举报
回复
可能和你使用相对路径有关吧,路径在外部组好,换成绝对路径试试,
cheng2005 2013-05-22
  • 打赏
  • 举报
回复
相对路径有些东西要注意 相对路径是指相对Environment.CurrentDirectory的路径 string path1 = System.IO.Path.GetFullPath("abc.txt"); Console.WriteLine("path1:{0}", path1); Environment.CurrentDirectory = System.IO.Path.Combine("d:\\"); string path2 = System.IO.Path.GetFullPath("abc.txt"); Console.WriteLine("path2:{0}", path2); 而Environment.CurrentDirectory是会变的,从外部打开程序都会影响Environment.CurrentDirectory。 所以,一般是用Path.GetDirectoryName(Assembly.GetEntryAssembly().Location),来取得程序目录,然后把相对路径转换为绝对路径。

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧