2010-09-14 45 views
1

我有一個小問題,這可能是我一個愚蠢的錯誤在我身邊。Dotnetzip,事件處理程序不保存後

這裏是我的代碼,在需要時創建一個zip文件並將文件添加到存檔。

添加一個文件可以毫無問題地工作,但由於某種原因,在保存後不會觸發該事件。

我在zipFile_SaveProgress設置了一個斷點,事件沒有被觸發。


class CoverArchive 
{ 
     private ZipFile zipFile; 
     private String coverArchivePath; 

     public CoverArchive() 
     {   
      coverArchivePath = "Archive\\Covers"; 

      if (!File.Exists("Archive\\Covers")) 
      { 
       CreateZipFile(); 
      } 
      using (zipFile = ZipFile.Read(coverArchivePath)) 
      { 
       //zipFile.AddProgress += zipFile_AddProgress; 
       //zipFile.ExtractProgress += zipFile_ExtractProgress; 
       //zipFile.ZipError += zipFile_ZipError; 
       zipFile.SaveProgress += zipFile_SaveProgress; 
      } 
     } 

     private void CreateZipFile() 
     { 
      zipFile = new ZipFile(); 
      zipFile.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression; 
      zipFile.UseUnicodeAsNecessary = true; 
      if (!Directory.Exists("Archive")) 
       Directory.CreateDirectory("Archive"); 
      zipFile.Save(coverArchivePath); 
     } 

     public void AddCover(List<String> directories, String coverName, Stream fileStream) 
     { 
      try 
      { 
       using (zipFile = ZipFile.Read(coverArchivePath)) 
       { 
        String filePath = createPath(directories, coverName); 
        ZipEntry entry = zipFile.AddEntry(filePath, fileStream); 
        zipFile.Save(); 
       } 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Error adding File" + ex); 
      } 
     } 
     private void zipFile_SaveProgress(Object sender, SaveProgressEventArgs e) 
     { 
      if (e.EventType == ZipProgressEventType.Saving_Completed) 
       Console.WriteLine("Save Done"); 
     } 
} 

感謝很多提前:)

回答

1

您要添加的事件處理調用Save()後。
因此,當它提出SaveProgress事件時,沒有任何處理程序。

+0

看起來像是這個問題,我刪除了整個使用語句和zipFile = ZipFile.Read(coverArchivePath)語句。然後它工作。 :) 非常感謝 ;) – Drunkendo 2010-09-14 19:55:53