当前位置:编程学习 > C#/ASP.NET >>

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

问题是这样的
我的程序中有一段这样的代码,是用来判断在程序当前运行的目录下面是否存在程序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判断时候的目录就切换到了我打开媒体文件的所在目录??? --------------------编程问答-------------------- 相对路径有些东西要注意
相对路径是指相对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),来取得程序目录,然后把相对路径转换为绝对路径。 --------------------编程问答-------------------- 可能和你使用相对路径有关吧,路径在外部组好,换成绝对路径试试, --------------------编程问答-------------------- 你可以写代码来验证一下自己的想法,看是不是跟Environment.CurrentDirectory相关.
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,