Что случилось с моим приложением - — Размер был 0, но я ожидал 46806!

Я - программист C#.

Теперь, я использую ICSharpCode.SharpZipLib.dll для создания zip-файла в моем текущем проекте. Но мне приходит в голову, что, когда я нажимаю кнопку во ВТОРОМ РАЗЕ для выполнения функции для создания 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, "");
}

Теперь, я покажу Вам рекурсивную обработку вызовов:

  1. Назовите метод "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();
}
  1. Вызовите функцию UpdateApp асинхронно в методе UpdateApp, она только вызовет функцию UpdateDetail просто.
private void UpdateDetail(string masterConfig, string category)
{
    IUpdate worker = new HP.ActiveCheckLocalMode.UpdateEngine.UpdateManager();
    worker.UpdateApp(masterConf);
}
  1. Рабочий. UpdateApp назовет UpdateDetail (строка, UpdateCategory) только.
private void UpdateDetail(string masterConfig, UpdateCategory cat)
{
    UpdateThread updateThread = new UpdateThread(this, cat);
    updateThread.MasterConfig = masterConfig;
    updateThread.ThreadProc();
}

Это - обработка вызовов. Когда я нажму во второй раз кнопки обновления, когда это выдаст исключение, можно ли помочь мне?Большое спасибо.

6
задан Russ Clarke 6 August 2010 в 08:06
поделиться