J'ai un fil qui rassemble une liste d'URL à partir d'un site Web et met à jour l'interface utilisateur comme il le fait. Cela fonctionne bien. Mais, j'ai besoin du fil principal pour attendre que les liens aient été rassemblés. J'ai essayé de faire une jointure, mais cela bloque l'interface utilisateur. Voici mon exemple. Comme vous pouvez le voir, la boucle foreach est appelée en même temps que le thread. Je veux que le foreach fonctionne après que le thread ait fonctionné.Sujets et attente
Des idées?
/** This thread will add links to list<string> linkList **/
Thread linkListThread = new Thread(new ThreadStart(getLinkList));
linkListThread.Start();
foreach (String link in linkList)
{
txtOutput.Text += link;
}
Une pointe de côté, vous pouvez faire quelque chose comme 'txtOutput.Text = string.join ("", linkList.ToArray()) ', beaucoup plus rapide et mieux sur la mémoire. –
Si votre thread actuel engendre juste un autre thread pour faire le travail, et doit ensuite attendre que ce thread se termine, pourquoi faites-vous cela avec deux threads? Pourquoi ne pas simplement appeler le code qui fait le travail directement? –