私は C# プログラマーです。
現在、ICSharpCode.SharpZipLib.dllを使用して、現在のプロジェクトで zip ファイルを作成しています。しかし、2 回目にボタンをクリックして 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, "");
}
ここで、再帰呼び出しプロセスを示します。
- 「ActiveCheckManager」クラスのメソッド「UpdateAppAsync」を呼び出す
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(); }
それが呼び出しプロセスです。更新ボタンを 2 回クリックすると、例外がスローされます。どうもありがとうございました。