#if NET20 || NET30 || NET35 || !NET_4_6 // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Runtime.Serialization; namespace System.Threading.Tasks { /// /// Represents an exception used to communicate task cancellation. /// [Serializable] internal class TaskCanceledException : LinqInternal.Core.NewOperationCanceledException { [NonSerialized] private readonly Task _canceledTask; // The task which has been canceled. /// /// Initializes a new instance of the class. /// public TaskCanceledException() : base("A task was canceled") { // Empty } /// /// Initializes a new instance of the /// class with a specified error message. /// /// The error message that explains the reason for the exception. public TaskCanceledException(string message) : base(message) { // Empty } /// /// Initializes a new instance of the /// class with a specified error message and a reference to the inner exception that is the cause of /// this exception. /// /// The error message that explains the reason for the exception. /// The exception that is the cause of the current exception. public TaskCanceledException(string message, Exception innerException) : base(message, innerException) { } /// /// Initializes a new instance of the class /// with a reference to the that has been canceled. /// /// A task that has been canceled. public TaskCanceledException(Task task) : base("A task was canceled", task != null ? task.CancellationToken : new CancellationToken()) { _canceledTask = task; } /// /// Initializes a new instance of the /// class with serialized data. /// /// The that holds the serialized object data about the exception being thrown. /// The that contains contextual information about the source or destination. protected TaskCanceledException(SerializationInfo info, StreamingContext context) : base(info, context) { // Empty } /// /// Gets the task associated with this exception. /// /// /// It is permissible for no Task to be associated with a /// , in which case /// this property will return null. /// public Task Task { get { return _canceledTask; } } } } #endif