Share via


DtsEventHandlerEnumerator.Current Propiedad

Definición

Obtiene el elemento actual de la colección.

public:
 property Microsoft::SqlServer::Dts::Runtime::DtsEventHandler ^ Current { Microsoft::SqlServer::Dts::Runtime::DtsEventHandler ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.DtsEventHandler Current { get; }
member this.Current : Microsoft.SqlServer.Dts.Runtime.DtsEventHandler
Public ReadOnly Property Current As DtsEventHandler

Valor de propiedad

Elemento actual de la colección.

Ejemplos

En el ejemplo de código siguiente se crean dos controladores de eventos para el paquete. Para un controlador de eventos, se agregan dos tareas. A continuación, se crea y DtsEventHandlerEnumerator usa los Current métodos y MoveNext para navegar por la colección.

using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.SqlServer.Dts.Runtime;  
using Microsoft.SqlServer.Dts.Tasks.SendMailTask;  
using Microsoft.SqlServer.Dts.Tasks.BulkInsertTask;  

namespace DtsEventHandler_API  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Package pkg = new Package();  

            // Set up a DtsEventHandler for the OnError event of the package.  
            DtsEventHandler dtsEHOE = (DtsEventHandler)pkg.EventHandlers.Add("OnError");  
            DtsEventHandler dtsEHW = (DtsEventHandler)pkg.EventHandlers.Add("OnWarning");  

            // When an OnError Event occurs, the Executables collection contains  
            // the items to run. For this example, there will be a SendMailtTask  
            // and a BulkInsertTask with a precedence constraint between them.  
            Executable dtsEH1 = dtsEHOE.Executables.Add("STOCK:SendMailTask");  
            TaskHost th = (TaskHost)dtsEH1;  
            SendMailTask smTask = (SendMailTask)th.InnerObject;  
            smTask.Subject = "Send Mail task";  

            // Add a second executable to the DtsEventHandler.  
            Executable dtsEH2 = dtsEHOE.Executables.Add("STOCK:BulkInsertTask");  
            TaskHost th2 = (TaskHost)dtsEH2;  

            //Create the Enumerator. Since we added the DtsEventhandler to the   
            // package, then that's where to get the EventHandlers collection.  
            DtsEventHandlerEnumerator myEnum = pkg.EventHandlers.GetEnumerator();  
            Console.WriteLine("The collection contains the following values:");  
            int i = 0;  
            while ((myEnum.MoveNext()) && (myEnum.Current != null))  
                Console.WriteLine("[{0}] {1}", i++, myEnum.Current.Name);  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  
Imports Microsoft.SqlServer.Dts.Tasks.SendMailTask  
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask  

Namespace DtsEventHandler_API  
    Class Program  
        Shared  Sub Main(ByVal args() As String)  
            Dim pkg As Package =  New Package()   

            ' Set up a DtsEventHandler for the OnError event of the package.  
            Dim dtsEHOE As DtsEventHandler = CType(pkg.EventHandlers.Add("OnError"), DtsEventHandler)  
            Dim dtsEHW As DtsEventHandler = CType(pkg.EventHandlers.Add("OnWarning"), DtsEventHandler)  

            ' When an OnError Event occurs, the Executables collection contains  
            ' the items to run. For this example, there will be a SendMailtTask  
            ' and a BulkInsertTask with a precedence constraint between them.  
            Dim dtsEH1 As Executable =  dtsEHOE.Executables.Add("STOCK:SendMailTask")   
            Dim th As TaskHost = CType(dtsEH1, TaskHost)  
            Dim smTask As SendMailTask = CType(th.InnerObject, SendMailTask)  
            smTask.Subject = "Send Mail task"  

            ' Add a second executable to the DtsEventHandler.  
            Dim dtsEH2 As Executable =  dtsEHOE.Executables.Add("STOCK:BulkInsertTask")   
            Dim th2 As TaskHost = CType(dtsEH2, TaskHost)  

            'Create the Enumerator. Since we added the DtsEventhandler to the   
            ' package, then that's where to get the EventHandlers collection.  
            Dim myEnum As DtsEventHandlerEnumerator =  pkg.EventHandlers.GetEnumerator()   
            Console.WriteLine("The collection contains the following values:")  
            Dim i As Integer =  0   
            While (myEnum.MoveNext()) &&(myEnum.Current <> Nothing)  
            Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1  
            End While  
        End Sub  
    End Class  
End Namespace  

Salida del ejemplo:

La colección contiene los siguientes valores:

[0] OnError

[1] OnWarning

Comentarios

Después de crear un enumerador, o después de una llamada al Reset método , MoveNext se debe llamar al método para avanzar el enumerador al primer elemento de la colección antes de leer el valor de la Current propiedad; de lo contrario, Current no está definido y produce una excepción.

Currenttambién produce una excepción si se devuelve falsela última llamada a MoveNext , que indica el final de la colección.

Currentno mueve la posición del enumerador y las llamadas consecutivas para devolver el mismo objeto hasta que MoveNext se llama a Current o Reset .

Un enumerador sigue siendo válido mientras la colección permanezca inalterada. Si se realizan cambios en la colección, como agregar, modificar o eliminar elementos, el enumerador se invalida y se convierte en irrecuperable; por lo tanto, la siguiente llamada a MoveNext o Reset produce una InvalidOperationExceptionexcepción . Si la colección se modifica entre las llamadas a MoveNext y Current, Current devuelve el elemento en el que se establece, incluso si el enumerador se ha invalidado.

Se aplica a