Comment puis-je attribuer un nom à une tâche dans le TPL

Je vais utiliser beaucoup de tâches en cours d'exécution de mon application. Chaque tas de tâches est en cours d'exécution pour une raison quelconque. Je voudrais le nom de ces tâches alors, quand je regarde la fenêtre Tâches Parallèles, je pourrais les reconnaître facilement.

Avec un autre point de vue, considérer que je suis en utilisant des tâches au niveau du cadre pour remplir une liste. Un développeur qui utilise mon cadre est également à l'aide de tâches pour son travail. Si elle regarde à la Fenêtre Tâches Parallèles, elle va trouver certaines tâches ayant aucune idée à ce sujet. Je veux le nom de tâches afin qu'elle puisse distinguer le cadre des tâches à partir de ses tâches.

Il serait très pratique si il y avait une telle API:

var task = new Task(action, "Growth calculation task")

ou peut-être:

var task = Task.Factory.StartNew(action, "Populating the datagrid")

ou même en travaillant avec des Parallel.ForEach

Parallel.ForEach(list, action, "Salary Calculation Task"

Est-il possible de nommer une tâche?

Est-il possible de donner Parallel.ForEach une structure de nommage (peut-être l'aide d'un lambda) de sorte qu'il crée des tâches avec cette appellation?

Est-il une telle API quelque part que je suis absent?


J'ai aussi essayé d'utiliser un hérité de la tâche de remplacer c'est ToString(). Mais, malheureusement, la fenêtre Tâches Parallèles ne pas utiliser ToString()!

class NamedTask : Task
{
    private string TaskName { get; set; }
    public NamedTask(Action action, string taskName):base(action)
    {
        TaskName = taskName;
    }

    public override string ToString()
    {
        return TaskName;
    }
}

OriginalL'auteur mehrandvd | 2012-12-07