TaskFactory::StartNew Method (Action^, CancellationToken)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Creates and starts a Task.

Namespace:   System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)

Task^ StartNew(
	Action^ action,
	CancellationToken cancellationToken


Type: System::Action^

The action delegate to execute asynchronously.

Type: System.Threading::CancellationToken

The CancellationToken that will be assigned to the new task.

Return Value

Type: System.Threading.Tasks::Task^

The started Task.

Exception Condition

The provided CancellationToken has already been disposed.


The exception that is thrown when the action argument is null.

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 StartNew(Action^, CancellationToken) with default parameters. Note, however, that there is a difference in behavior between the two methods regarding : 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 StartNew(Action^, CancellationToken) 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 StartNew(Action^, CancellationToken) method to create a task that iterates the files in the C:\Windows\System32 directory. The lambda expression calls the Parallel::ForEach<TSource> method to add information about each file to a List<T> object. Each detached nested task invoked by the Parallel::ForEach<TSource> 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.

No code example is currently available or this language may not be supported.

Universal Windows Platform
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Available since 5.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top