Exportar (0) Imprimir
Expandir todo

Enlistment (Clase)

Facilita la comunicación entre un participante de la transacción inscrito y el administrador de transacciones durante la fase final de la transacción.

Espacio de nombres: System.Transactions
Ensamblado: System.Transactions (en system.transactions.dll)

public class Enlistment
public class Enlistment
public class Enlistment
No aplicable.

Cuando se invocan los métodos EnlistVolatile y EnlistDurable del objeto Transaction para inscribir un participante en una transacción, los métodos devuelven este objeto que describe la inscripción.

Durante la fase final de confirmación de la transacción, el administrador de transacciones pasa este objeto a un administrador de recursos que implementa la interfaz IEnlistmentNotification que se ha inscrito en una transacción. En concreto, el administrador de transacciones llama al método Commit o Rollback del participante, en función de si el último ha determinado confirmar o deshacer la transacción. El participante llamará al método Done de este objeto para permitir que el administrador de transacciones sepa que ha finalizado el trabajo.

Una inscripción puede llamar cuando quiera al método Done antes de que haya llamado a Prepared en la fase de preparación. De esta forma, la inscripción produce un voto de sólo lectura, es decir, confirma la transacción pero no necesita recibir el resultado final. Tenga en cuenta que, después de que se llama al método Done, el participante inscrito no recibe ninguna notificación más del administrador de transacciones.

En el ejemplo siguiente se muestra una implementación de la interfaz IEnlistmentNotification y cuándo se debería llamar al método Done.

class myEnlistmentClass : IEnlistmentNotification
{
    public void Prepare(PreparingEnlistment preparingEnlistment)
    {
        Console.WriteLine("Prepare notification received");

        //Perform transactional work

        //If work finished correctly, reply prepared
        preparingEnlistment.Prepared();

        // otherwise, do a ForceRollback
        preparingEnlistment.ForceRollback();
    }

    public void Commit(Enlistment enlistment)
    {
        Console.WriteLine("Commit notification received");

        //Do any work necessary when commit notification is received

        //Declare done on the enlistment
        enlistment.Done();
    }

    public void Rollback(Enlistment enlistment)
    {
        Console.WriteLine("Rollback notification received");

        //Do any work necessary when rollback notification is received

        //Declare done on the enlistment
        enlistment.Done();
    }

    public void InDoubt(Enlistment enlistment)
    {
        Console.WriteLine("In doubt notification received");

        //Do any work necessary when indout notification is received
        
        //Declare done on the enlistment
        enlistment.Done();
    }
}

Este tipo es seguro para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0
Mostrar:
© 2014 Microsoft