2014-02-13 40 views
0

我在工作線程中使用DotNetZip從zip文件中提取文件。線程函數如下所示。用DotNetZip創建C#線程文件

如果需要,應該使用bool var shouldStop來停止用戶提取。現在是問題:沒有「while(!shouldStop)」行的情況下工作正常。但是,如果這一行在那裏,甚至沒有其他代碼更改應該停止的值,該線程提取zip文件中的第一個文件,並生成錯誤消息,說第一個文件已經存在(提取方法不能覆蓋現有文件)。這意味着 e不會移動到下一個元素。

有人可以幫我解決這個問題嗎?謝謝!

史蒂芬

public void ExtractFiles() // thread 
    { 
     var options = new ReadOptions { StatusMessageWriter = System.Console.Out }; 

     using (ZipFile zip = ZipFile.Read(@folderName + @"\" + zipFileName, options)) 
     { 
      foreach (ZipEntry e in zip.Entries) 
      { 
       // while (!shouldStop) 
       { 
        e.Extract(@"d:\temp\temp1"); 
       } 
      } 
     }// using 


    }// public void ReadFileList() 

回答

1

你不應該有foreach環路內while循環。只需在foreach循環內輸入if聲明,如果shouldStoptrue,則輸入break

+0

非常感謝,問題真的在這裏:) – StevenZ