Я готовлю приложение, которое создает zip-файл для данного каталога.
Я хочу, чтобы при создании почтового индекса отображались следующие элементы.
- Расчетное время для завершения этого почтового индекса (истекшее время и оставшееся время)
- Процент для завершения Zipping
Вот мой письменный код:
* +1012 *
private void CreateZip(string FilePath)
{
using (ZipFile zip = new ZipFile())
{
zip.AddProgress += Zip_AddProgress;
zip.SaveProgress += Zip_SaveProgress;
zip.CompressionMethod = Ionic.Zip.CompressionMethod.Deflate;
zip.CompressionLevel = Ionic.Zlib.CompressionLevel.BestCompression;
zip.UseZip64WhenSaving = Zip64Option.AsNecessary;
if (!string.IsNullOrEmpty(FilePath))
{
zip.AddDirectory(FilePath, new DirectoryInfo(FilePath).Name);
}
var d= zip;
if (File.Exists(txtDest.Text))
{
File.Delete(txtDest.Text);
}
zip.Save(txtDest.Text);
}
}
private void Zip_SaveProgress(object sender, SaveProgressEventArgs e)
{
if (e.EventType == ZipProgressEventType.Saving_Started)
lblFileName.Text = "Proccess Started Successfully";
if (e.EventType == ZipProgressEventType.Saving_AfterSaveTempArchive)
lblFileName.Text = "Proccess Completed Successfully";
if (e.BytesTransferred > 0 && e.TotalBytesToTransfer > 0)
{
int progress = (int)Math.Floor((decimal)((e.BytesTransferred * 100) / e.TotalBytesToTransfer));
pbPerFile.Value = progress;
lblPercentagePerFile.Text = Convert.ToString(progress) + "%";
Application.DoEvents();
}
if (e.EntriesSaved > 0 && e.EntriesTotal > 0)
{
int progress = (int)Math.Floor((decimal)((e.EntriesSaved * 100) / e.EntriesTotal));
pbTotalFile.Value = progress;
Application.DoEvents();
lblTotal.Text = Convert.ToString(progress) + "%";
}
}
Первый индикатор выполнения работает с размером файла из-за e.BytesTransferred и e.TotalBytesToTransfer - это возвращаемый размер в байт .
Но e.EntriesSaved и e.EntriesTotal вернет длину сохраненных записей и общее количество записей, которые мы добавили.
Поэтому я хочу, чтобы второй индикатор выполнения работал в зависимости от размера всех выбранных файлов и сжатых файлов.
Ваши усилия будут оценены.
Спасибо ...