2014-12-25 4 views
0

Я использую этот код;Как получить прогресс ZipFile.Read()

using (ZipFile zip = ZipFile.Read(FileName)) 
{ 
    zip.ExtractProgress += ExtractProgressHandler;  
    zip.ReadProgress += ReadProgressHandler; 
    zip.ExtractAll(AppDomain.CurrentDomain.BaseDirectory + "\\Library\\" + zip.Comment,ExtractExistingFileAction.OverwriteSilently);    
} 

Но событие ReadProgress никогда не срабатывает. Я думаю, мне нужно добавить обработчик событий, прежде чем использовать ZipFile.Read(). Но я не знаю, как это сделать.

+0

Установили ли вы контрольную точку в ReadProgressHandler? – opewix

+0

@JesseJames да. – user2617750

+2

@abatishchev Это DotNetZip. Класс BCL ZipFile не имеет событий. – Onots

ответ

4

Вы можете вызвать перегруженный ZipFile.Read, который использует ReadOptions. Вы можете указать обработчик событий в ReadOptions.

ReadOptions myReadOptions = new ReadOptions { ReadProgress = ExtractProgressHandler }; 
using (ZipFile zip = ZipFile.Read(FileName, myReadOptions)) 
{ 
    zip.ExtractProgress += ExtractProgressHandler;  
    zip.ExtractAll(AppDomain.CurrentDomain.BaseDirectory + "\\Library\\" + zip.Comment,ExtractExistingFileAction.OverwriteSilently);    
} 

Примечание: я не тестировал его, код предоставлен как есть.