Пример #1
0
        //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;
            }
        }
Пример #2
0
        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
        }