https://msdn.microsoft.com/en-us/library/system.threading.tasks.task(v=vs.110).aspx

 

The Task class represents a single operation that does not return a value and that usually executes asynchronously. 

Task objects are one of the central components of the task-based asynchronous pattern first introduced in the .NET Framework 4.

Because the work performed by a Taskobject typically executes asynchronously on a thread pool thread rather than synchronously on the main application thread, you can use the Statusp roperty, as well as the IsCanceledIsCompleted, and IsFaulted properties, to determine the state of a task.

Most commonly, a lambda expression is used to specify the work that the task is to perform.

 

Creating and executing a task

Task instances may be created in a variety of ways.

The most common approach, which is available starting with the .NET Framework 4.5, is to call the static Run method.

The Run method provides a simple way to start a task using default values and without requiring additional parameters.

The following example uses the Run(Action) method to start a task that loops and then displays the number of loop iterations:

                Console.WriteLine($"begin {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}");
                Task task = Task.Run(() =>
                {
                    int count;
                    for (count = 0; count < 1000000; count++)
                    {
                    }
                    Console.WriteLine($"count = {count}");
                });
                task.Wait();
                Console.WriteLine($"end {DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}");

 

 

方法

Task.WaitAll

Waits for all of the provided Task objects to complete execution.

public static void WaitAll(
    params Task[] tasks
)

Parameters

tasks
Type: System.Threading.Tasks.Task[]

An array of Task instances on which to wait.