La documentation MSDN indique que les threads démarrés par la TPL apprécieront une meilleure planification. Cependant, étant donné que les threads sont basés sur le threadpool, ils seront mis en œuvre comme threads d'arrière-plan. P>
Maintenant, il y a quelques tâches que je voudrais être effectuées en parallèle, mais il est impératif que ces tâches soient effectuées jusqu'à l'achèvement. P>
Alors, comment créer de telles tâches qui sont essentiellement des fils de premier plan, mais apprécient toujours la planification améliorée fournie par la TPL? P>
4 Réponses :
Vous pouvez écrire votre propre TaskSchDuler CODE> Mise en œuvre. Regardez dans le TaskschDuler Documentation pour un exemple de mise en œuvre d'un
TaskschDuler code> - Espérons que c'est relativement simple de là. P>
Ce lien est maintenant cassé. Je pense que c'est équivalent: code.msdn.microsoft.com/parextsamples
@Holf: merci, corrigé.
@Theodorzoulias: changé vers le TaskschDuler Code> Docs, qui incluent un exemple.
Le TPL ne vous donne pas vraiment de threads, il vous permet de créer des tâches. Les tâches peuvent être exécutées sur différents threads, alors tâche! = Thread. p>
Comme avec la plaine threadpool, ce ne serait pas une bonne idée de changer de propriétés de fil. p>
Mais votre problème pourrait être facilement résolu en attendant toutes les tâches remarquables du fil principal. Vous voulez généralement attraper et gérer leurs exceptions aussi. p>
Merci! Maintenant, je crée juste un fil non-fond trivial qui attend que les tâches meurent toutes. Accepter votre réponse.
the codage heureux. P> isbackground code>
propriété peut em> être attribué à. Je ne suis pas sûr que ce soit "d'accord" ou "non-pantalon-sur-tête" cependant. P>
Il est impératif que ces tâches soient réalisé jusqu'à l'achèvement. P> blockQuote>
Je suppose que vous voulez dire que vous voulez vous assurer que ces tâches complètent même si le fil principal est arrêté? P>
Je ne suggérerais pas en fonction du fil de premier plan séjournant actif si le fil principal s'éteint. Dans des circonstances normales, vous pouvez garder le fil principal actif, attendre que les tâches se terminent. Vous pouvez également écrire un gestionnaire pouvant piéger des exceptions non gérées et faire une fermeture gracieuse - y compris l'attente des tâches à compléter. Si quelque chose échappe à votre piège à exceptions non conventionnels, votre processus est probablement tellement corrompu que vous ne devez pas faire confiance aux résultats des tâches. P>
Et, bien sûr, rien que vous n'empêchera qu'un utilisateur de fermer les threads à l'aide de la tâche ou quelque chose de similaire. P>
Pouvez-vous décrire le scénario un peu plus? Sont-ils des emplois totalement indépendants d'incendie et d'oublier?