KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm a newbie with multithreading. I have a winform that have a label and a progress bar. I wanna show the processing result. Firstly, I use Application.DoEvents() method. But, I find that the form is freezing. Then I read some article about multithreading at MSDN. Secondly, I use a BackgroundWorker to do it. this.bwForm.DoWork += (o, arg) => { DoConvert(); }; this.bwForm.RunWorkerAsync(); The form doesn't freeze that I can drag/drog when processing. Unfortunately, it throws an InvalidOperationException. So I have to use this. Control.CheckForIllegalCrossThreadCalls = false; I ensure that's not a final solution. Do you have some suggestion to do so, Experts? Edit: When I call listview throw InvalidOperationException. This code is in DoWork(). foreach (ListViewItem item in this.listView1.Items) { //........some operation lbFilesCount.Text = string.Format("{0} files", listView1.Items.Count); progressBar1.Value++; } Edit2: I use delegate and invoke in DoWork() and it don't throw exeption. But the form is freezing again. How to do it so the form could be droppable/drappable while processing?
Tags (comma-separated)
Save Edits
Cancel