Comment nommer un thread exécute une Tâche?
- Je trouver de nommage des threads pour être très utile lors du débogage.
Je ne vois pas le moyen de nommer un thread à l'aide des arguments de Task.Factory.StartNew()
Alors, est-il acceptable pour nom le fil de manière explicite dans la tâche? par exemple:
private void MyFunc()
{
Task.Factory.StartNew(() =>
{
Thread.CurrentThread.Name = "Foobulizer";
Foobulize();
});
}
Toutefois, je reconnais que les fils peuvent être réutilisés pour des tâches différentes, donc j'ai besoin d'explicitement réinitialiser le nom du thread à la fin de la tâche? Cela se sent assez hacky donc je pense que c'est probablement une mauvaise idée, ou il ya une bonne façon de le faire?
OriginalL'auteur GazTheDestroyer | 2012-02-23
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire cela depuis plusieurs Tâches peuvent partager un seul ou de multiples threads dépend de pool de threads de l'état à un moment donné du temps. Fondamentalement, la Tâche n'est pas d'un Fil, c'est juste un très haut niveau d'abstraction pour l'opération asynchrone. Vous pouvez utiliser De la tâche.Id bien, mais gardez à l'esprit que
Id
est en lecture seule et deint
type de sorte que vous ne pouvez pas assigner nom convivial.Prendre un coup d'oeil à la intégré dans Visual Studio 2010 en Parallèle les fonctions de Débogage, peut-être que vous trouverez une autre approche: Procédure pas à pas: le Débogage d'une Application Parallèle
Parallèle Des Tâches De La Fenêtre:
Task.CurrentId
sur les Tâches de l'Action ou de la méthode.OriginalL'auteur sll
La valeur par défaut
TaskScheduler
utilise le .NETThreadPool
pour planifier les tâches. Ainsi vous obtiendrez un thread qui existe déjà ou qui seront réutilisés (potentiellement les deux, mais probable).Notez que vous pouvez seulement le nom d'un thread à la fois. La deuxième tentative d'appel
Thread.CurrentThread.Name
déclenche uneInvalidOperationException
. Ceci est particulièrement mauvais quand c'est un thread du pool.En général, vous ne devez pas modifier les attributs d'un sujet que vous n'avez pas (explicitement) créer ou propre (le nom, le priorité être les éminents d'autres candidats).
OriginalL'auteur Christian.K
Sûr que vous pouvez, il suffit de retirer le Nom de nouveau lorsque vous avez terminé. définir le Nom du thread de nouveau "en veille" de minerai de chaîne.Vide après Foobulize();
OriginalL'auteur Walter Verhoeven