Attendre fils pour compléter
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i < 15; i++)
{
Thread nova = new Thread(Method);
nova.Start();
}
listBox1.Items.Add("Some text");
}
private void Method()
{
for (int i = 0; i < 15; i++)
{
Console.WriteLine(i);
}
}
Ce code n'est à écrire: un texte et puis les chiffres 111222333.....
Je voudrais qu'il écrit 111122223333.... et puis sur la fin du texte.
est-il possible de le faire avec les threads (parent d'attente du thread pour enfant threads)? ou dois-je utiliser autre chose?
Pourquoi êtes-vous à l'aide de threads pour cela? Je suppose que c'est un exemple artificiel, mais j'ai besoin de plus d'informations pour vous donner une réponse précise.
double possible de C#: l'Attente pour tous les threads complète
Non c'est juste un exemple. j'ai besoin d'accéder inconnu nombre de pages web. et tous de lire les même informations et de les stocker dans la base de données. ainsi, lorsque tous les threads sont fini, j'ai besoin de faire quelque chose avec cette info. je ne peux rien faire jusqu'à ce que j'ai toutes les infos dont j'avais besoin
double possible de C#: l'Attente pour tous les threads complète
Non c'est juste un exemple. j'ai besoin d'accéder inconnu nombre de pages web. et tous de lire les même informations et de les stocker dans la base de données. ainsi, lorsque tous les threads sont fini, j'ai besoin de faire quelque chose avec cette info. je ne peux rien faire jusqu'à ce que j'ai toutes les infos dont j'avais besoin
OriginalL'auteur Car90 | 2012-06-22
Vous devez vous connecter pour publier un commentaire.
Je suggère l'utilisation de TPL pour obtenir ce fait. Vous n'aurez pas besoin de pondre autant de fils. Par défaut TPL va utiliser le pool de thread pour que:
OriginalL'auteur Sergei B.
Vous avez besoin de garder une trace de tous les threads, et l'utilisation
Thread.Join
sur chacun d'eux. Ce attend jusqu'à ce que le thread spécifié s'arrête et continue l'exécution. Comme ceci:OriginalL'auteur Roman Starkov
Vous pourriez avoir deux fils, le 2ème en attente sur un signal de feu à partir de la première.
La meilleure solution maintenant .Net 4.0 (et versions ultérieures) utiliser des Tâches, et d'invoquer une méthode à l'aide de
ContinueWith
La jointure des réponses aussi travailler, mais nécessitent le contenant de fil à bloc. Si vous ne voulez pas l'interface graphique de bloc, Frayer un thread supplémentaire autour de la 1ère.
ajouté le signal à la liste des signaux, merci
OriginalL'auteur payo
Vous pouvez utiliser thread.joindre à attendre pour les threads à la fin. Voir http://www.dotnetperls.com/thread-join pour une page sur la façon de l'utiliser.
OriginalL'auteur Andrew Cox