Gets a value that indicates which error occurred during an asynchronous operation.
Namespace: System.ComponentModel
Assembly: System (in System.dll)
Public ReadOnly Property Error As Exception
public Exception Error { get; }
Property Value
Type: System.ExceptionAn Exception instance, if an error occurred during an asynchronous operation; otherwise null.
If an exception is raised during an asynchronous operation, the class will assign the exception to the Error property. The client application's event-handler delegate should check the Error property before accessing any properties in a class derived from AsyncCompletedEventArgs. Otherwise, the property will raise a TargetInvocationException with its InnerException property holding a reference to Error.
The value of the Error property is null if the operation was canceled.
Notes to Inheritors
If you provide read-only properties in a derived class, make sure that you call the RaiseExceptionIfNecessary method in your property implementation. This prevents clients from accessing properties that are potentially not valid because of a failure in the asynchronous operation.
The following code example demonstrates the using the Error property to inform a client that an asynchronous operation failed. This code example is part of a larger example provided for the System.ComponentModel.AsyncOperationManager class.
' The worker process for data retrieval. Simulates a ' time-consuming operation by using Thread.Sleep. Public Sub GetPersons(ByVal itemsCount As Integer, _ ByVal Name As String, _ ByVal asyncOperation As AsyncOperation) Dim canceled As Boolean = False Dim exception As Exception = Nothing Dim personList As New List(Of Person)() Dim i As Integer = 1 While i <= itemsCount OrElse itemsCount = 0 Dim currentName As String = Name + CStr(i) personList.Add(New Person() With { _ .Name = currentName, _ .Age = i, _ .Birthday = DateTime.Today.AddYears(-i), _ .Available = (i Mod 2 = 0) _ }) ' Delay 1 second for each person. Thread.Sleep(1000) ' Report progress by using AsyncOperation to raise ' the ProgressChanged event. Pass in itemsCount of ' zero to see effect of catching an exception. Dim percentComplete As Integer Try percentComplete = Convert.ToInt32(i * 100 / itemsCount) Catch ex As Exception exception = ex Exit While End Try Dim progressChangedEventArgs As _ New GetPersonsProgressChangedEventArgs _ (currentName, _ percentComplete, _ asyncOperation.UserSuppliedState) asyncOperation.Post _ (AsyncOpProgressReportHandler, progressChangedEventArgs) If GetPersonsCheckForCancellation _ (asyncOperation.UserSuppliedState) Then canceled = True Exit While End If i += 1 End While ' Report completion by raising the Completed event. Dim completedEventArgs As _ New GetPersonsCompletedEventArgs _ (personList, _ exception, _ canceled, _ asyncOperation.UserSuppliedState) asyncOperation.PostOperationCompleted _ (AsyncOpCompletedHandler, completedEventArgs) End Sub
// The worker process for data retrieval. Simulates a // time-consuming operation by using Thread.Sleep. public void GetPersons (int itemsCount, string Name, AsyncOperation asyncOperation) { bool canceled = false; Exception exception = null; List<Person> personList = new List<Person>(); for (int i = 1; i <= itemsCount || itemsCount == 0; i++) { string currentName = Name + i; personList.Add(new Person() { Name = currentName, Age = i, Birthday = DateTime.Today.AddYears(-i), Available = (i % 2 == 0) }); // Delay 1 second for each person. Thread.Sleep(1000); // Report progress by using AsyncOperation to raise // the ProgressChanged event. int percentComplete = 0; try { percentComplete = Convert.ToInt32(i * 100 / itemsCount); } catch (Exception ex) { exception = ex; break; } GetPersonsProgressChangedEventArgs progressChangedEventArgs = new GetPersonsProgressChangedEventArgs( currentName, percentComplete, asyncOperation.UserSuppliedState); asyncOperation.Post(AsyncOpProgressReportHandler, progressChangedEventArgs); if (GetPersonsCheckForCancellation (asyncOperation.UserSuppliedState)) { canceled = true; break; } } // Report completion by raising the Completed event. GetPersonsCompletedEventArgs completedEventArgs = new GetPersonsCompletedEventArgs( personList, exception, canceled, asyncOperation.UserSuppliedState); asyncOperation.PostOperationCompleted (AsyncOpCompletedHandler, completedEventArgs); }
Silverlight
Supported in: 5, 4, 3Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0XNA Framework
Supported in: Xbox 360, Windows Phone OS 7.0For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.