Guest Mion Shion Posted January 18, 2021 Posted January 18, 2021 ok i have a program where it connects to my ftp server downloads a file once downloaded and extracted i want to check the dir path that has just been created and add all the files in there to list box but the download i have created is done in a dll, and my program creates the dir if does not exist and adds a zip once downloaded will extract this zip file and from there i want to show those files in a list box only issue i have here is i am trying to find a way of waiting for the download to complete before i look for those files, the code i have in the dll is this. private void wc_completed(object sender, AsyncCompletedEventArgs e) { _MessageResult.Instance.Append("Download Completed!"); if (!Directory.Exists(Application.StartupPath + "\\Downloaded\\" + "//" + Kaori_Base.SelectedDownloadName)) { Directory.CreateDirectory(Application.StartupPath + "\\Downloaded\\" + "\\" + Kaori_Base.SelectedDownloadName + "\\" + Kaori_Base.SelectedDownloadName + ".zip"); unzipupdate(Application.StartupPath + "//Downloaded//" + "//" + Kaori_Base.SelectedDownloadName + "\\" + Kaori_Base.SelectedDownloadName + ".zip"); richTextBox1.Text = _MessageResult.Instance.Merge(); XtraMessageBox.Show("Added : " + Kaori_Base.SelectedDownloadName + " To : " + Application.StartupPath + "//Downloaded//" + " And Unzipped."); } else { unzipupdate(Application.StartupPath + "\\Downloaded\\" + Kaori_Base.SelectedDownloadName + "\\" + Kaori_Base.SelectedDownloadName + ".zip"); richTextBox1.Text = _MessageResult.Instance.Merge(); XtraMessageBox.Show("Added : " + Kaori_Base.SelectedDownloadName + " To : " + Application.StartupPath + "//Downloaded//" + " And Unzipped."); } listcollection(); richTextBox1.Text = _MessageResult.Instance.Merge(); this.Close(); } this is just what is triggered by the download form in the dll at the end of the download. and in the main form i have this, setname(); frmCDGPlayer cdgplayer = new frmCDGPlayer(@"C:\Users\elfen\Desktop\Karaoke Program\elfenliedtopfan5_update_fix\UpdateTest\bin\Debug\Downloaded\VSHXR\VSHXR\VSHXR-104 - Bloodhound Gang - The Bad Touch.zip"); cdgplayer.Play(); have tryied to create a filewatcher class to watch for files and add them to listbox as it downloads does not work, comes up with the following error, System.InvalidOperationException: 'Cross-thread operation not valid: Control 'checkedListBoxControl1' accessed from a thread other than the thread it was created on.' public void filemonitor(string path) { FileSystemWatcher elfensystem = new FileSystemWatcher(path); elfensystem.EnableRaisingEvents = true; elfensystem.IncludeSubdirectories = true; elfensystem.Created += Elfensystem_Created; elfensystem.Changed += Elfensystem_Changed; } private void Elfensystem_Changed(object sender, FileSystemEventArgs e) { string paths = Application.StartupPath + "\\Downloaded\\" + Kaori_Base.SelectedDownloadName; var fileNames = Directory.GetFiles(paths); foreach (var fileName in fileNames) { // cbListBox.Items.Add(fileName); // Full path //elfenlist.Add(fileName.Split('\\').Last()); add(fileName); // Just filename } } public void add(string fileName) { checkedListBoxControl1.Items.Add(fileName.Split('\\').Last()); } Ideally i would like to access the run a function once the download has completed but all that stuff is accessed in the dll i created but not sure how to access the function downloaded complete form a dll if that is even possible any help on this would be much appreciated thanks in advance elfenliedtopfan5 Continue reading... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.