TaskFactory::StartNew Method (Action, CancellationToken)
Creates and starts a Task.
Assemblies: mscorlib (in mscorlib.dll)
System.Threading.Tasks (in System.Threading.Tasks.dll)
- Type: System::Action
The action delegate to execute asynchronously.
Calling StartNew is functionally equivalent to creating a Task using one of its constructors and then calling Start to schedule it for execution.
Starting with the .NET Framework 4.5, you can use the Task::Run(Action, CancellationToken) method as a quick way to call with default parameters. Note, however, that there is a difference in behavior between the two methods regarding child tasks: Task::Run(Action, CancellationToken) by default does not allow child tasks started with the TaskCreationOptions::AttachedToParent option to attach to the current Task instance, whereas does. For more information and code examples, see Task.Run vs Task.Factory.StartNew in the Parallel Programming with .NET blog.
The following example calls the method to create a task that iterates the files in the C:\Windows\System32 directory. The lambda expression calls the Parallel::ForEach method to add information about each file to a List<T> object. Each detached nested task invoked by the Parallel::ForEach loop checks the state of the cancellation token and, if cancellation is requested, calls the CancellationToken::ThrowIfCancellationRequested method. The CancellationToken::ThrowIfCancellationRequested method throws an OperationCanceledException exception that is handled in a catch block when the calling thread calls the Task::Wait method.