La deuxième méthode, Task.Run
, a été présenté dans une version ultérieure de la .NET framework (.NET 4.5).
Cependant, la première méthode, Task.Factory.StartNew
, vous donne la possibilité de définir beaucoup de choses utiles sur le fil que vous souhaitez créer, tout en Task.Run
ne fournit pas cette.
Par exemple, disons que vous voulez créer une tâche en cours d'exécution du thread. Si un thread du pool de thread va être utilisé pour cette tâche, alors que cela pourrait être considéré comme un abus du pool de threads.
Une chose que vous pourriez faire pour éviter ce serait la tâche doit être exécutée dans un thread séparé. Un nouveau thread qui serait dédiée à cette tâche et qui sera détruite une fois votre tâche aurait été terminé. Vous ne peut pas réaliser cela avec l' Task.Run
, tandis que vous pouvez le faire avec l' Task.Factory.StartNew
, comme ci-dessous:
Task.Factory.StartNew(..., TaskCreationOptions.LongRunning);
Comme il est dit ici:
Ainsi, dans l' .NET Framework 4.5 Developer Preview, nous avons présenté le
nouvelle Tâche.Méthode Run. Ce qui ne obsoletesde la Tâche.Usine.StartNew,
mais plutôt devrait tout simplement être considéré comme un moyen rapide d'utilisation
De la tâche.Usine.StartNew sans avoir besoin de spécifier un tas de
les paramètres. C'est un raccourci. En fait, la Tâche.Run est en fait
mis en œuvre en termes de la même logique utilisée pour la Tâche.Usine.StartNew,
juste en passant des paramètres par défaut. Lorsque vous passez d'une Action
De la tâche.Exécuter:
Task.Run(someAction);
c'est exactement équivalent à:
Task.Factory.StartNew(someAction,
CancellationToken.None, TaskCreationOptions.DenyChildAttach, TaskScheduler.Default);