var tasks = new List<Task>();
foreach (var guid in guids)
{
var task = new Task( ...);
tasks.Add(task);
}
foreach (var task in tasks)
{
task.Start();
Task.WaitAll(task);
}
This is run of the UI thread. I need to execute all tasks in tasks variable one after the other. The problem is if I call Task.WaitAll(task), the UI freeze. How can I do the following logic without having the UI freeze?
This is not Task Chaining.
You need to do Task chaining using
ContinueWith. Last task would need to update the UI.Note the last line has
TaskScheduler.FromCurrentSynchronizationContext()this will ensure task will run in the synchronization context (UI Thread).