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 IsCanceled, IsCompleted, 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.
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.