Task.Wait Method (CancellationToken)

Waits for the cancellable Task to complete execution.

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

public void Wait(
	CancellationToken cancellationToken
)

Parameters

cancellationToken
Type: System.Threading.CancellationToken

A CancellationToken to observe while waiting for the task to complete.

ExceptionCondition
OperationCanceledException

The cancellationToken was canceled.

ObjectDisposedException

The Task has been disposed.

AggregateException

The Task was canceled -or- an exception was thrown during the execution of the Task. If the task was canceled, the AggregateException contains an OperationCanceledException in its InnerExceptions collection.

The following example instantiates a CancellationTokenSource object and runs a task that calls its Cancel method to request a cancellation. It runs a second task that enters a long-running loop. The Wait method is called inside a try/catch block and is passed the cancellation token (CancellationToken object) from the CancellationTokenSource object. Because cancellation was requested, the call to the Wait method throws an OperationCanceledException exception.

using System;
using System.Threading;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      CancellationTokenSource cts = new CancellationTokenSource();
      CancellationToken token = cts.Token;

      Task.Run( () => {
                   cts.Cancel();
                   if (token.IsCancellationRequested)
                      Console.WriteLine("Cancellation requested in Task {0}.", 
                                        Task.CurrentId);
                } , token);
      Task t2 = Task.Run( () => {
                             for (int ctr = 0; ctr <= Int32.MaxValue; ctr++) 
                             {}
                             Console.WriteLine("Task {0} finished.",
                                               Task.CurrentId);
                          } );
      try {
         t2.Wait(token);
      }   
      catch (OperationCanceledException) {
         Console.WriteLine("OperationCanceledException in Task {0}: The operation was cancelled.",
                           t2.Id);
      }
      finally {
         cts.Dispose();
      }
   }
}
// The example displays the following output: 
//       Cancellation requested in Task 1. 
//       OperationCanceledException in Task 2: The operation was cancelled.

.NET Framework

Supported in: 4.6, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft