有一程序结构如下:
程序根目录:C:\Programes\Mes System
根目录 C:\Programes\Mes System里头有两个文件夹 Bin,Update
Bin:主程序文件夹
Update:更新程序文件夹
1:现我在运行主程序Mes System.exe的时候用Shell方法调用Update下面的AuoUpdate.exe,然后用End方法强制结束主程序2:在AuoUpdate.exe中写了一些代码,比如用Io.system.File.Move以及Io.System.Directory.Move(有用递归)等等方法用以移除Mes System里头的所有内容,并将其备份到一临时文件夹中,也即象某些软件实现卸载的功能一样.3:程序运行结果是,我所有文件都删除成功,但是当我最后删除C:\Programes\Mes System\Bin文件夹的时候,却抛出异常提示"该文件被另一进程使用,无法访问",当我在windows进程管理里头去看,主程序确实已经结束,并没有在使用.所以就不知道为什么不能删除Bin文件夹了,请各位分析下!!

解决方案 »

  1.   

    如果C:\Programes\Mes System\Bin目录是AuoUpdate.exe的工作目录,也会提示"该文件被另一进程使用,无法访问"。
      

  2.   

    关键是两个单独的工作目录啊,怎么会有关系呢?他们一个是主程序的工作目录BIN,另外一个是更新程序的目录UPDATE,只是主程序通过Shell 来调用Update下面的程序,然后主程序用END方法强制结束
    那么我在被调用的Update程序里头,按道理应该是可以删除BIN里头的东西啊
      

  3.   

    D:\>md aD:\>cd aD:\a>rd ..\a
    另一个程序正在使用此文件,进程无法访问。
      

  4.   

    什么意思?楼上的?你这个是因为你打开了文件夹,但是我并没有打开文件夹啊!!难道我运行主程序就是打开文件夹???可是我用END方法强制结束了啊
      

  5.   

    用 Shell 调用时可能将 C:\Programes\Mes System\Bin 作为当前目录,所有不能删除。
    试试先变更当前目录,再调用 Shell;或者试试在 AuoUpdate.exe 中变更当前目录。又:既然是更新,留着空目录应该没问题,反正还要安装。