TaskFactory::StartNew Method (Action^, CancellationToken)
Creates and starts a Task.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- action
-
Type:
System::Action^
The action delegate to execute asynchronously.
- cancellationToken
-
Type:
System.Threading::CancellationToken
The CancellationToken that will be assigned to the new task.
| Exception | Condition |
|---|---|
| ObjectDisposedException | The provided CancellationToken has already been disposed. |
| ArgumentNullException | 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.
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 5.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1