Chaîne de tâches (attendre que la tâche précédente soit terminée)

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);
}

Ce qui est de l'exécution du thread d'INTERFACE utilisateur. J'ai besoin d'exécuter toutes les tâches en tâches variable l'une après l'autre. Le problème est que si je l'appelle de la Tâche.WaitAll(tâche), l'INTERFACE de gel. Comment puis-je faire la logique suivante sans avoir l'INTERFACE utilisateur de gel?

source d'informationauteur Melursus