public static void DownloadItems(string[] itemsToDownload, string destinationPath, Action <string> onFinished) { var wc = new WebClient(); foreach (var itemToDownload in itemsToDownload) { var urlToDownload = ConstStrings.FullUrlToPacks + itemToDownload; var destinationFile = Path.Combine(destinationPath, itemToDownload); ZipExtractorUtilies.CreateDirectoryForFile(destinationFile); wc.DownloadFile(urlToDownload, destinationFile); using (var zipStream = File.Open(destinationFile, FileMode.Open)) { ZipExtractorUtilies.UnzipFromStream(zipStream, destinationPath); } File.Delete(destinationFile); onFinished(itemToDownload); } }
private void button4_Click(object sender, EventArgs e) { downloadButton.Enabled = false; var _form = this; listBox1.Items.Clear(); var thr = new Thread(() => { ZipExtractorUtilies.DownloadItems(ConstStrings.Packs, ".", fName => { _form.UIThread(() => { listBox1.Items.Add(fName); Thread.Sleep(50); }); }); _form.UIThread(() => { downloadButton.Enabled = true; }); }); thr.Start(); }