Spécifiant le Nom du Fil lors de l'utilisation de la Tâche.StartNew
Est-il un moyen de spécifier le nom du Fil lors de l'utilisation de la Task.StartNew
méthode
var task = Task.Factory.StartNew(MyAction, TaskCreationOption.LongRunning, ??ThreadName??);
- Pour quel but vous voulez, même le nom de votre fils?
- Réelle Fils ne (peut) avoir des noms. Mais les Tâches ne sont pas.
- débogage!!
Vous devez vous connecter pour publier un commentaire.
Pas un Thread de nom pour sûr.
Threads et les tâches ne sont pas 1-de-1.
Vous pouvez utiliser la Tâche.Id de la suivre.
Bien, cela fonctionne:
Il y a un problème cependant, le pool de threads thread sont recyclés et ne change pas son nom. Cela peut être source de confusion, vous verrez qu'il est d'une exécution ultérieure de l'exécution d'entièrement différent du code. Assurez-vous de prendre note de cela. Votre meilleur pari est d'ailleurs d'utiliser l'Emplacement de la colonne dans le Debug + Windows + Threads fenêtre pour trouver la tâche.
Je préfère utiliser Thread.CurrentThread.ManagedThreadId. Ce n'est pas aussi bon que le nom, mais ne permettent de suivre le travail spécifique pour un thread.
Tâches d'utiliser le pool de threads et d'un fil peut être nommé qu'une seule fois. Ce que vous pouvez faire est d'utiliser un ThreadStatic variable. Il ne sera cependant vivre entre les tâches, afin de le fixer dans chaque tâche à nouveau.
Vous pouvez écrire votre propre TaskScheduler qui définit Fil.CurrentThread.Nom quand il met une tâche sur un fil. Une fois la tâche effectuée personnalisé de votre TaskScheduler pouvez également effacer Fil.CurrentThread.Nom pour éviter toute confusion.