AsyncCompletedEventArgs.RaiseExceptionIfNecessary Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вызывает исключение, предоставленное пользователем, если не удалось выполнить асинхронную операцию.
protected:
void RaiseExceptionIfNecessary();
protected void RaiseExceptionIfNecessary();
member this.RaiseExceptionIfNecessary : unit -> unit
Protected Sub RaiseExceptionIfNecessary ()
Исключения
Свойство Cancelled является true.
Свойство Error было задано асинхронной операцией. Свойство InnerException содержит ссылку на Error.
Примеры
В следующем примере кода демонстрируется использование RaiseExceptionIfNecessary в свойствах производных классов.
public class CalculatePrimeCompletedEventArgs :
AsyncCompletedEventArgs
{
readonly int numberToTestValue;
readonly int firstDivisorValue = 1;
readonly bool isPrimeValue;
public CalculatePrimeCompletedEventArgs(
int numberToTest,
int firstDivisor,
bool isPrime,
Exception e,
bool canceled,
object state) : base(e, canceled, state)
{
numberToTestValue = numberToTest;
firstDivisorValue = firstDivisor;
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;
}
}
}
Public Class CalculatePrimeCompletedEventArgs
Inherits AsyncCompletedEventArgs
Private numberToTestValue As Integer = 0
Private firstDivisorValue As Integer = 1
Private isPrimeValue As Boolean
Public Sub New( _
ByVal numberToTest As Integer, _
ByVal firstDivisor As Integer, _
ByVal isPrime As Boolean, _
ByVal e As Exception, _
ByVal canceled As Boolean, _
ByVal state As Object)
MyBase.New(e, canceled, state)
Me.numberToTestValue = numberToTest
Me.firstDivisorValue = firstDivisor
Me.isPrimeValue = isPrime
End Sub
Public ReadOnly Property NumberToTest() As Integer
Get
' Raise an exception if the operation failed
' or was canceled.
RaiseExceptionIfNecessary()
' If the operation was successful, return
' the property value.
Return numberToTestValue
End Get
End Property
Public ReadOnly Property FirstDivisor() As Integer
Get
' Raise an exception if the operation failed
' or was canceled.
RaiseExceptionIfNecessary()
' If the operation was successful, return
' the property value.
Return firstDivisorValue
End Get
End Property
Public ReadOnly Property IsPrime() As Boolean
Get
' Raise an exception if the operation failed
' or was canceled.
RaiseExceptionIfNecessary()
' If the operation was successful, return
' the property value.
Return isPrimeValue
End Get
End Property
End Class
Примечания для тех, кто наследует этот метод
Если вы производили собственный класс из AsyncCompletedEventArgs класса, свойства, доступные только для чтения, должны вызывать RaiseExceptionIfNecessary() метод перед возвратом значения свойства. Если асинхронный рабочий код компонента назначает исключение Error свойству или задает Cancelled для свойства trueзначение, свойство вызовет исключение, если клиент пытается считывать его значение. Это предотвращает доступ клиентов к свойствам, которые потенциально недопустимы из-за сбоя в асинхронной операции.