//K end #region worker private void Worker_DoWork(object sender, DoWorkEventArgs e) { if (e.Argument is string[]) { List <R_MythicPackageIndex> toblock = new List <R_MythicPackageIndex>(); string[] files = (string[])e.Argument; bool error = false; for (int k = 0; (k < files.Length) && !error; k++) //Should read ALL files in folder { toblock.Add(R_MythicPackageIndex.Pack(files[k], ref error)); K_Setvalue(1); } if (error) { e.Result = "An Error was encountered while working. See MessageBox"; } else { e.Result = toblock; } } if (e.Argument is List <R_MythicPackageIndex> ) { List <R_MythicPackageIndex> indexes = (List <R_MythicPackageIndex>)e.Argument; //Now we should create Blocks of 100 elements List <R_MythicPackageBlock> blocks = new List <R_MythicPackageBlock>(); int i = 0; for (int k = 0; k < indexes.Count;) { blocks.Add(R_MythicPackageBlock.Pack(indexes, k, ref i));//Creates block struct k = i; K_Setvalue(1); } //Now we have all blocks, let's do the header. R_MythicPackageHeader package = new R_MythicPackageHeader(); package = R_MythicPackageHeader.Create(blocks); e.Result = package; } else if (e.Argument is R_MythicPackageHeader) { R_MythicPackageHeader towrite = (R_MythicPackageHeader)e.Argument; //We should now write down .uop format using package string name = ((Path.GetFileName(FolderName)).Insert((Path.GetFileName(FolderName)).Length, ".uop")); //Where to write uop //Choose writing method //write1(towrite, name); //write2(towrite, name); write3(towrite, name); e.Result = true; } }
private void pack_btn_Click(object sender, EventArgs e) { if (FolderName == null) { display_box.AppendText("\n\nError: no folder loaded."); return; } load_btn.Enabled = false; pack_btn.Enabled = false; seehash_btn.Enabled = false; //We start reading data's files + data's index and creating a list of them. List <R_MythicPackageIndex> toblock = new List <R_MythicPackageIndex>(); R_MythicPackageIndex final_data = new R_MythicPackageIndex(); //display_box.AppendText("\n" + Path.GetFileName(FolderName)); //Read files display_box.AppendText("\n\nReading data's files.."); string[] files = Directory.GetFiles(FolderName, "*", SearchOption.AllDirectories); //Get all files in directories progressBar.Maximum = files.Length; Worker.RunWorkerAsync(files); //Worker will create index and datas List }