2012-01-11 6 views
0

私は様々なアーカイブでsevenzipsharpを実行しています。テストに合格すると、アーカイブを別のフォルダに移動したいと思います。しかし、ファイルがプロセスによって使用されているという例外があります。私はそれを移動することができます私は私のアプリのプロセスを殺すときにWindowsエクスプローラでそれを移動することはできません。私はsevenzipsharpがファイルをロックしているので、私はそれを動かすことができないと思う。sevenzipsharpファイルロック。ファイルを移動できませんか?

私はusing (var extractor= new SevenZipExtractor(fn)) {と書いています。私は使用ブロックの外にファイルを移動しようとしたが、まだ行っていない。この方法を数回実行すると、最初のアーカイブを移動できますが、最後のアーカイブを移動することはできません。

どのようなプロセスでもファイルを使用して移動できないようにする方法フォルダへのアーカイブ?

+0

オープンソースについての素晴らしい何で、あなたはバグを自分で修正することができます。作成者がそれを行うには、プロジェクトの課題トラッカーを使用します。私は彼が、かなり合理的な期待である再プロジェクションプロジェクトを望んでいると思う。 –

答えて

0

このオブジェクトを破棄し、使用することはしません(....)私は理由はわかりませんが(!)、このメソッドは私のために働いていました。

アーカイブが有効でない場合、ロックされたままになります... 提案がありますか?

更新: 良い方法があります。ファイルのストリームを作成し、コードの最後に閉じることができます。

Stream reader=new FileStream(filename, FileMode.Open);//You can change Open mode to OpenOrCreate 
sevenZipExtractor extactor= new SevenZipExtractor((Stream)reader); 

//Your code here..... 

reader.Close(); 
extactor.Dispose(); 
0

私は次のコードで(でも、無効なアーカイブで)この作品を作ることができる:

try 
{ 
    extractor.ExtractArchive(tempFolder); 
} 
finally 
{ 
    extractor.Dispose(); 
    GC.Collect(); 
    GC.WaitForPendingFinalizers(); 
    Directory.Delete(tempFolder, true); 
} 
関連する問題