AsyncCompletedEventArgs.RaiseExceptionIfNecessary Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Levanta uma exceção fornecida pelo utilizador se uma operação assíncrona falhou.
protected:
void RaiseExceptionIfNecessary();
protected void RaiseExceptionIfNecessary();
member this.RaiseExceptionIfNecessary : unit -> unit
Protected Sub RaiseExceptionIfNecessary ()
Exceções
A propriedade Cancelled é true.
A Error propriedade foi definida pela operação assíncrona. A InnerException propriedade tem uma referência a Error.
Exemplos
O exemplo de código seguinte demonstra a utilização RaiseExceptionIfNecessary de propriedades de classe derivadas.
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
Notas para Herdeiros
Se tiver derivado a sua própria classe a partir da AsyncCompletedEventArgs classe, as suas propriedades de apenas leitura devem chamar o RaiseExceptionIfNecessary() método antes de devolver o valor da propriedade. Se o código de trabalho assíncrono do componente atribuir uma exceção à Error propriedade ou definir a Cancelled propriedade para true, a propriedade gerará uma exceção se um cliente tentar ler o seu valor. Isto impede que os clientes acedam a propriedades que potencialmente não são válidas devido a uma falha na operação assíncrona.