2010-11-18 3 views
0

私はjavascriptファイルのフォルダを最小化する別のプロセスを実行しています。このプロセスでは、 "_min.js"が付加されたjsファイルごとに新しいファイルが作成されます。次のステップは、古いjsファイル( "_min.js"なしのファイル)を削除することです。何らかの理由でFile.Deleteはこれらのファイルを削除できません。C#ファイルを削除できません - System.UnauthorizedAccessException

一部のプロセスでは、これらのファイルにハンドルが残っているようです。削除しようとするとSystem.UnauthorizedAccessException例外が発生します。私はこのフォルダに十分な特権を持っています。誰かが私が見落としていることを教えてもらえますか?

私はこのループで数回プロセスを実行しています。

foreach (var fileInfo in jsFiles) 
      { 
       var outFileName = fileInfo.FullName.Replace(".js", "_min.js"); 

       var compressorPath = "\"C:\\Dev\\Team Interactive Tools\\trunk\\Infrastructure\\MsBuild\\lib\\yuicompressor-2.4.2.jar\""; 
       StringBuilder stringBuilder = new StringBuilder("-jar " + compressorPath + " "); 
       stringBuilder.Append("\"" + fileInfo.FullName + "\""); 
       stringBuilder.Append(" -o " + "\"" + outFileName + "\""); 

       Process p = new Process(); 
       p.StartInfo.FileName = "\"C:\\Program Files (x86)\\Java\\jre6\\bin\\java\""; 
       p.StartInfo.Arguments = stringBuilder.ToString(); 
       p.StartInfo.UseShellExecute = false; 
       p.StartInfo.RedirectStandardOutput = true; 
       p.Start(); 

      } 

      return true; 
     } 

は、その後、私はオリジナルズを削除しよう:

private void RemoveOrginalJs(FileInfo[] files) 
    { 
     foreach (var fileInfo in files) 
     { 
       File.Delete(fileInfo.FullName); 
     } 
    } 

私は、各プロセスの実行後Process.closeを()しようとしたのですが、それは何の差延を行うものではありません。

+0

あなたの側からこれ以上のフィードバック。それは今働いていますか? –

答えて

1

私はあなたが開始されているツールを知っているが、その完了を待っていると、何らかの形で行うには正しいことらしいません。

p.Start(); 
p.WaitForExit(); 
0

多分、スレッドはまだファイルをロックしていますか?あなたが試して削除する前にそれらが完了するのを待つか?

0

Process.Kill()を試してから削除してください。
さらに、スクリプトが別のプロセスでも実行されていないかどうかを確認する必要があります。これを確定するには、Unlockerを試してみてください。

関連する問題