private async void ValidateFiles_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { this.currentFileText(""); this.progressBarFileValue(0); this.progressBarAllValue(0); Properties.Settings.Default.LastRepoFileHash = repoReader.CalculateFileHash(repoReader.GetRepoFile()); Properties.Settings.Default.Save(); if (this.isInstall) { this.installFiles.RunWorkerAsync(); } else { this.progressBarFileStyle(ProgressBarStyle.Continuous); this.progressStatusText("Waiting for orders"); await this.taskDelay(1500); this.mainForm.HideDownloadPanel(); mainForm.ReadRepo(true, true); } }
private void Builder_DoWork(object sender, DoWorkEventArgs e) { if (File.Exists(repoPath + "repoList.a3l")) { File.Delete(repoPath + "repoList.a3l"); } Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); long filesCount = Directory.GetFiles(repoPath, "*", SearchOption.AllDirectories).LongLength; int filesSelected = 0; int filesDone = 0; string[] items = new string[filesCount]; items = Directory.GetFiles(repoPath, "*", SearchOption.AllDirectories); try { foreach (string item in items) { for (int i = 0; i < addonsList.CheckedItems.Count; i++) { if (addonsList.CheckedItems[i].ToString() == item.Remove(0, repoPath.Length).Split('\\')[0]) { filesSelected++; } } } using (FileStream fs = File.Create(repoPath + "repoList.a3l")) { foreach (string item in items) { bool addIt = false; for (int i = 0; i < addonsList.CheckedItems.Count; i++) { if (addonsList.CheckedItems[i].ToString() == item.Remove(0, repoPath.Length).Split('\\')[0]) { addIt = true; } } if (addIt) { int splitCount = item.Split('\\').Length; this.buildLogText(Environment.NewLine + "Adding: " + item.Split('\\')[splitCount - 1]); byte[] file = new UTF8Encoding(true).GetBytes( repoReader.CalculateFileHash(item) + "*" + string.Format("{2:0000}{1:00}{0:00}{3:00}{4:00}{5:00}", File.GetLastWriteTime(item).Day, File.GetLastWriteTime(item).Month, File.GetLastWriteTime(item).Year, File.GetLastWriteTime(item).Hour, File.GetLastWriteTime(item).Minute, File.GetLastWriteTime(item).Second) + "*" + item.Remove(0, repoPath.Length) ); fs.Write(file, 0, file.Length); byte[] newline = Encoding.ASCII.GetBytes(Environment.NewLine); fs.Write(newline, 0, newline.Length); filesDone++; } this.progressBarFileValue(Convert.ToInt32(((double)filesDone / filesSelected) * 100)); if (this.builder.CancellationPending) { e.Cancel = true; break; } } } } catch (Exception ex) { new Windows.MessageBox().Show(ex.Message, "Error while building repository", MessageBoxButtons.OK, MessageIcon.Error); } finally { // Get the elapsed time as a TimeSpan value. TimeSpan ts = stopWatch.Elapsed; // Format and display the TimeSpan value. string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10); stopWatch.Stop(); this.buildLogText(Environment.NewLine); this.buildLogText(Environment.NewLine + "Files in repository folder: " + filesCount); this.buildLogText(Environment.NewLine + "Files added to catalog: " + filesDone + " of " + filesSelected); this.buildLogText(Environment.NewLine + "Catalog built in: " + elapsedTime); } }