void ExtractDirectory(DiscDirectoryInfo Dinfo, string RootPath, string PathinISO) { if (!string.IsNullOrWhiteSpace(PathinISO)) { PathinISO += "\\" + Dinfo.Name; } RootPath += "\\" + Dinfo.Name; AppendDirectory(RootPath); foreach (DiscDirectoryInfo dinfo in Dinfo.GetDirectories()) { ExtractDirectory(dinfo, RootPath, PathinISO); } var test = Dinfo.GetFiles(); foreach (DiscFileInfo finfo in test) { using (Stream FileStr = finfo.OpenRead()) { using (FileStream Fs = File.Create(RootPath + "\\" + finfo.Name)) { Progress_Bar.Increment(1 / test.Length); Progress_Number.Text = Progress_Bar.Value.ToString() + " %"; Progress_Number.Refresh(); FileStr.CopyTo(Fs, 8 * 1024); } } } }