Я только видел 3 дня относительно использования TPL, который делает ту же работуЧто касается использования Task.Start(), Task.Run() и Task.Factory.StartNew()
здесь код
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Create a task and supply a user delegate by using a lambda expression.
Task taskA = new Task(() => Console.WriteLine("Hello from taskA."));
// Start the task.
taskA.Start();
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Define and run the task.
Task taskA = Task.Run(() => Console.WriteLine("Hello from taskA."));
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
public static void Main()
{
Thread.CurrentThread.Name = "Main";
// Better: Create and start the task in one operation.
Task taskA = Task.Factory.StartNew(() => Console.WriteLine("Hello from taskA."));
// Output a message from the calling thread.
Console.WriteLine("Hello from thread '{0}'.",
Thread.CurrentThread.Name);
taskA.Wait();
}
Я просто не понимаю, почему MS дает 3 разных способа запустить работу в TPL, потому что все они работают одинаково: Task.Start()
, Task.Run()
и Task.Factory.StartNew()
.
Сообщите мне, являются ли Task.Start()
, Task.Run()
и Task.Factory.StartNew()
все используемые для этой же цели или они имеют различное значение?
Когда нужно использовать Task.Start()
, когда Task.Run()
и когда следует использовать Task.Factory.StartNew()
?
Пожалуйста, помогите мне понять их реальное использование по сценарию в деталях с примерами, спасибо.
Существует [старая статья, объясняющая это здесь] (http://blogs.msdn.com/b/pfxteam/archive/2010/06/13/10024153.aspx) и [здесь для более новой 'Task.Run '] (http://blogs.msdn.com/b/pfxteam/archive/2011/10/24/10229468.aspx) - возможно, это ответит на ваш вопрос;) – Carsten
[Здесь] (http://stackoverflow.com/a/21427264/1768303) является примером того, где 'Task.Start' действительно полезен. – Noseratio