Export (0) Print
Expand All
This topic has not yet been rated - Rate this topic

AsyncCompletedEventArgs.RaiseExceptionIfNecessary Method

Raises a user-supplied exception if an asynchronous operation failed.

Namespace:  System.ComponentModel
Assembly:  System (in System.dll)
protected void RaiseExceptionIfNecessary()
ExceptionCondition
InvalidOperationException

The Cancelled property is true.

TargetInvocationException

The Error property has been set by the asynchronous operation. The InnerException property holds a reference to Error.

Notes to Inheritors

If you have derived your own class from the AsyncCompletedEventArgs class, your read-only properties should call the RaiseExceptionIfNecessary method before returning the property value. If the component's asynchronous worker code assigns an exception to the Error property or sets the Cancelled property to true, the property will raise an exception if a client tries to read its value. This prevents clients from accessing properties that are potentially not valid due to a failure in the asynchronous operation.

The following code example demonstrates using RaiseExceptionIfNecessary in derived class properties.

    public class CalculatePrimeCompletedEventArgs :
        AsyncCompletedEventArgs
    {
        private int numberToTestValue = 0;
        private int firstDivisorValue = 1;
        private bool isPrimeValue;

        public CalculatePrimeCompletedEventArgs(
            int numberToTest,
            int firstDivisor,
            bool isPrime,
            Exception e,
            bool canceled,
            object state) : base(e, canceled, state)
        {
            this.numberToTestValue = numberToTest;
            this.firstDivisorValue = firstDivisor;
            this.isPrimeValue = isPrime;
        }

        public int NumberToTest
        {
            get
            {
                // Raise an exception if the operation failed or  
                // was canceled.
                RaiseExceptionIfNecessary();

                // If the operation was successful, return the  
                // property value. 
                return numberToTestValue;
            }
        }

        public int FirstDivisor
        {
            get
            {
                // Raise an exception if the operation failed or  
                // was canceled.
                RaiseExceptionIfNecessary();

                // If the operation was successful, return the  
                // property value. 
                return firstDivisorValue;
            }
        }

        public bool IsPrime
        {
            get
            {
                // Raise an exception if the operation failed or  
                // was canceled.
                RaiseExceptionIfNecessary();

                // If the operation was successful, return the  
                // property value. 
                return isPrimeValue;
            }
        }
    }

.NET Framework

Supported in: 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

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.

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.