Condividi tramite


DtsEventHandlerEnumerator.Current Proprietà

Definizione

Ottiene l'elemento corrente della raccolta.

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

Valore della proprietà

Elemento corrente nella raccolta.

Esempio

L'esempio di codice seguente crea due gestori eventi per il pacchetto. Per un gestore eventi, vengono aggiunte due attività. Viene quindi creato un oggetto DtsEventHandlerEnumerator e usa i Current metodi e MoveNext per passare alla raccolta.

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  

Esempio di output

L'insieme contiene i valori seguenti:

[0] OnError

[1] OnWarning

Commenti

Dopo la creazione di un enumeratore o dopo una chiamata al metodo, il MoveNext metodo deve essere chiamato per avanzare l'enumeratore al Reset primo elemento della raccolta prima di leggere il valore della Current proprietà. In caso contrario, Current non è definito e genera un'eccezione.

Current genera anche un'eccezione se l'ultima chiamata a MoveNext restituita false, che indica la fine della raccolta.

Current non sposta la posizione dell'enumeratore e le chiamate consecutive per Current restituire lo stesso oggetto finché non MoveNext viene chiamato o Reset .

Un enumeratore rimane valido finché la raccolta rimane invariata. Se le modifiche vengono apportate alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato e diventa irrecuperabile; quindi, la chiamata successiva a MoveNext o Reset genera un InvalidOperationExceptionoggetto . Se la raccolta viene modificata tra chiamate a MoveNext e Current, Current restituisce l'elemento impostato su, anche se l'enumeratore è stato invalidato.

Si applica a