Cer Cer Cer Cer Enum

Definizione

Specifica un comportamento per il metodo chiamato all'interno di un'area a esecuzione vincolata (CER, Constrained Execution Region).Specifies a method's behavior when called within a constrained execution region.

public enum class Cer
[System.Serializable]
public enum Cer
type Cer = 
Public Enum Cer
Ereditarietà
Attributi

Campi

MayFail MayFail MayFail MayFail 1

In condizioni eccezionali, il metodo può avere esito negativo.In the face of exceptional conditions, the method might fail. In tal caso, il metodo segnalerà al metodo chiamante l'esito positivo o negativo.In this case, the method will report back to the calling method whether it succeeded or failed. È necessaria la presenza di una CER attorno al corpo del metodo per consentire al metodo di fornire il valore restituito.The method must have a CER around the method body to ensure that it can report the return value.

None None None None 0

Il metodo, il tipo o l'assembly non è a conoscenza di una CER.The method, type, or assembly has no concept of a CER. Non usufruisce dei vantaggi delle garanzie di un'area a esecuzione vincolata.It does not take advantage of CER guarantees.

Success Success Success Success 2

In condizioni eccezionali, è garantito l'esito positivo del metodo.In the face of exceptional conditions, the method is guaranteed to succeed. È sempre necessario costruire una CER attorno al metodo chiamato, anche quando viene chiamato dall'interno di un'area non CER.You should always construct a CER around the method that is called, even when it is called from within a non-CER region. Un metodo ha esito positivo se esegue le azioni previste.A method is successful if it accomplishes what is intended. Ad esempio, contrassegnare Count con ReliabilityContractAttribute(Cer.Success) implica che quando viene eseguito in una CER, restituisce sempre il conteggio del numero di elementi in ArrayList e non può mai lasciare i campi interni in uno stato indeterminato.For example, marking Count with ReliabilityContractAttribute(Cer.Success) implies that when it is run under a CER, it always returns a count of the number of elements in the ArrayList and it can never leave the internal fields in an undetermined state.

Esempi

Nell'esempio di codice seguente viene illustrato l'utilizzo Cer dell'enumerazione quando si specifica un'area di esecuzione vincolata per un metodo.The following code example demonstrates the use of the Cer enumeration when specifying a constrained execution region for a method. Questo esempio di codice fa parte di un esempio più ampio fornito ReliabilityContractAttribute per il costruttore.This code example is part of a larger example provided for the ReliabilityContractAttribute constructor.

[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
[MethodImpl(MethodImplOptions.NoInlining)]
void StackDepth2()
{
    try
    {
        consistentLevel2 = false;
        if (depth == 2)
            Thread.Sleep(-1);
        StackDepth3();
    }
    finally
    {
        consistentLevel2 = true;
    }
}
<ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)>
<MethodImpl(MethodImplOptions.NoInlining)>
Sub StackDepth2()
   Try
      consistentLevel2 = False
      If depth = 2 Then Thread.Sleep(-1)
      StackDepth3()
   Finally
      consistentLevel2 = True
   End Try
End Sub

Commenti

L' Cer enumerazione specifica il comportamento di un metodo, di un tipo o di un assembly all'interno di un'area a esecuzione vincolata (CER).The Cer enumeration specifies the behavior of a method, type, or assembly within a constrained execution region (CER). Usare uno dei tre valori disponibili per indicare che l'entità avrà esito positivo, non è in grado di conoscere un'area CER oppure può (deterministicamente) essere in grado di segnalare l'esito positivo o negativo.Use one of the three available values to indicate that the entity will succeed, has no knowledge of a CER, or might (deterministically) be able to report success or failure.

Una CER garantisce che l'area del codice venga eseguita senza interruzioni anche se viene generata un'eccezione asincrona, ad esempio un'eccezione di memoria insufficiente per il thread interrotto, o l'overflow dello stack.A CER provides guarantees that the region of code will execute uninterrupted even if an asynchronous exception such as an aborted thread out-of-memory exception, or stack overflow is raised.

Tuttavia, il Cer.None valore di enumerazione indica che il metodo, il tipo o l'assembly non ha alcun concetto di CER.However, the Cer.None enumeration value indicates that the method, type, or assembly has no concept of a CER. Non usufruisce dei vantaggi delle garanzie di un'area a esecuzione vincolata.It does not take advantage of CER guarantees. Questo implica quanto segue:This implies the following:

  • In condizioni eccezionali, il metodo potrebbe non riuscire.In the face of exceptional conditions the method might fail.

  • È possibile che il metodo non segnali l'errore (è non deterministico).The method might or might not report that it failed (it is non-deterministic).

  • Il metodo non viene scritto tenendo presenti le CER, che è lo scenario più probabile.The method is not written with CERs in mind (which is the most likely scenario).

Se un metodo, un tipo o un assembly non è contrassegnato in modo esplicito come esito positivo, viene Cer.Nonecontrassegnato in modo implicito come.If a method, type, or assembly is not explicitly marked to succeed, it is implicitly marked as Cer.None.

Si applica a

Vedi anche