I'm a C# programmer.
Now, I'm using the ICSharpCode.SharpZipLib.dll to create a zip file in my current project. But it occurs to me that when I click the button at the SECOND TIME to execute a function to create a zip file, the application will throw an exception, friendly and seriously told me that "Size was zero, but I expected 46086".
I'm so confused that I want to know why? When I click the button at the first time, I can do it successfully without any error.
My related codes are as follows:
internal void ThreadProc()
{
try
{
ZipHelper.CreateZip(backupZipFile, Constants.HomeConstant, true);
// do other things
}
}
The CreateZip() function's realization is as follows:
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, "");
}
Now, I will show you the recursive calling process:
- Call method "UpdateAppAsync" in "ActiveCheckManager" class
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(); }
- Call the UpdateApp function asynchronously, in the UpdateApp method, it will only call the UpdateDetail function simply.
private void UpdateDetail(string masterConfig, string category) { IUpdate worker = new HP.ActiveCheckLocalMode.UpdateEngine.UpdateManager(); worker.UpdateApp(masterConf); }
- The worker.UpdateApp will call UpdateDetail(string, UpdateCategory) only.
private void UpdateDetail(string masterConfig, UpdateCategory cat) { UpdateThread updateThread = new UpdateThread(this, cat); updateThread.MasterConfig = masterConfig; updateThread.ThreadProc(); }
That is the calling process. When I click the update button second time, it will throw an exception, can you help me? Thank you very much.