Я программист на C #.
Теперь я использую ICSharpCode.SharpZipLib.dll , чтобы создать zip-файл в моем текущем проекте.Но мне приходит в голову, что когда я нажимаю кнопку в SECOND TIME , чтобы выполнить функцию для создания zip-файла, приложение выдает исключение, дружелюбно и серьезно говорит мне, что «Размер был нулевым, ноЯ ожидал 46086 ".
Я так растерялся, что хочу знать почему?Когда я нажимаю кнопку в первый раз, я могу сделать это успешно без каких-либо ошибок.
Мои соответствующие коды следующие:
internal void ThreadProc()
{
try
{
ZipHelper.CreateZip(backupZipFile, Constants.HomeConstant, true);
// do other things
}
}
Реализация функции CreateZip () заключается в следующем:
public static void CreateZip(string zipFileName, string sourceDirectory, bool recurse)
{
FastZip zip = new FastZip();
if (File.Exists(zipFileName))
{
File.Delete(zipFileName);
}
zip.CreateZip(zipFileName, sourceDirectory, true, "");
}
Теперь я покажу вам процесс рекурсивного вызова:
- Вызовите метод "UpdateAppAsync" в классе "ActiveCheckManager"
public void UpdateAppAsync(string masterConfig)
{
this.masterConf = masterConfig;
Thread actualThread = new Thread(new ThreadStart(UpdateApp));
actualThread.IsBackground = true;
actualThread.CurrentCulture = Thread.CurrentThread.CurrentCulture;
actualThread.CurrentUICulture = Thread.CurrentThread.CurrentUICulture;
actualThread.Start();
}
Вызовите функцию UpdateApp асинхронно, в методе UpdateApp она просто вызовет функцию UpdateDetail.
private void UpdateDetail(string masterConfig, string category)
{
IUpdate worker = new HP.ActiveCheckLocalMode.UpdateEngine.UpdateManager();
worker.UpdateApp(masterConf);
}
worker.UpdateApp будет вызывать только UpdateDetail (string, UpdateCategory).
private void UpdateDetail(string masterConfig, UpdateCategory cat)
{
UpdateThread updateThread = new UpdateThread(this, cat);
updateThread.MasterConfig = masterConfig;
updateThread.ThreadProc();
}
Это вызывающий процесс.Когда я нажму кнопку обновления во второй раз, произойдет исключение, вы можете мне помочь?Большое спасибо.