Recently decided to write a “quick” windows form app to tag my MP3 files. Not done anything with parallelism since .Net 3.0, so I’m looking at the Parallel.ForEach method to deal with the UI locking I get when I’m using a standard foreach statement. Here’s an excerpt:
var i = 1;
var files = new List<string>(); // File list is populated using recursive method.
foreach(var f in files) {
// Add a row
var row = dgvList.Rows[dgvList.Rows.Add()];
// Update label
lblSummary.Text = string.Concat("Processing... ", i);
// Do things with row
// Increment progress bar
progressBar.PerformStep();
i++;
}
I’ve figured out the simple usage of Parallel.ForEach(), but I’m not sure I should be using that particular method to update the UI? Any suggestions?
OK, I found the best way to achieve this is by running something like this:
I actually updated my code to populate a List within the foreach loop, then assign that to the daragrid via .DataSource, instead of working with the .Rows collection directly. Should have done that from the start really 🙂