Mise à jour:
Après que j'ai répondu à cette question (il y a longtemps!) J'ai trouvé qu'il n'est pas vrai que les Tâches s'exécutent toujours à la fin - il y a une petite, disons-le, "coin" de cas, où des tâches ne peut pas se terminer.
La raison en est que ce: Comme j'ai répondu précédemment, les Tâches sont essentiellement fils; mais elles sont fond de threads. Threads d'arrière-plan sont automatiquement annulée lorsque tous les originaux fils de finition. Donc, si vous ne faites rien à la tâche et à la fin du programme, il y a une chance que la tâche ne sera pas terminée.
Vous devez toujours attendre sur les tâches. Plus d'informations peuvent être trouvées sur l' excellente réponse de Jon m'a donné.
Origine:
Des tâches sont planifiées pour le pool de threads, ce qui signifie qu'ils sont essentiellement threads1 (en fait, ils encapsulent les threads).
À partir du Fil de la documentation:
Il n'est pas nécessaire de conserver un
référence à un objet Thread une fois que vous
ont commencé le fil. Le fil
continue de s'exécuter jusqu'à ce que le thread
la procédure est terminée.
Alors, non, il n'est pas nécessaire de conserver une référence à elle.
Aussi, la documentation stipule que la meilleure façon de créer une Tâche est d'utiliser l'usine de:
Vous pouvez également utiliser la méthode StartNew
pour créer et démarrer une tâche dans une
le fonctionnement. C'est la meilleure façon
pour créer et démarrer des tâches si la création
et de la programmation n'ont pas à être
séparés (...)
Espérons que cela aide.
1 en Conséquence de la documentation:
Une tâche asynchrone
l'opération, et à certains égards, c'
ressemble à la création d'un nouveau thread
ou ThreadPool élément de travail, mais à un
niveau d'abstraction supérieur.