Ich habe gerade 3 Routinen bezüglich der TPL-Verwendung gesehen, die den gleichen Job machen. Hier ist der Code:
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();
}
Ich verstehe einfach nicht , warum MS 3 verschiedene Möglichkeiten gibt Arbeitsplätze in TPL laufen , weil sie alle Arbeiten gleich: Task.Start()
, Task.Run()
und Task.Factory.StartNew()
.
Sag mir, sind Task.Start()
, Task.Run()
und Task.Factory.StartNew()
alle für den gleichen Zweck verwendet oder haben sie andere Bedeutung?
Wann sollte man verwenden Task.Start()
, wann sollte man verwenden Task.Run()
und wann sollte man verwenden Task.Factory.StartNew()
?
Bitte helfen Sie mir, ihre tatsächliche Verwendung gemäß dem Szenario anhand von Beispielen detailliert zu verstehen, danke.
Task.Run
- vielleicht wird dies Ihre Frage beantworten;)