DtsEventHandlerEnumerator.Current 속성

정의

컬렉션의 현재 요소를 가져옵니다.

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

속성 값

컬렉션의 현재 요소입니다.

예제

다음 코드 샘플은 패키지에 대해 두 개의 이벤트 핸들러를 생성합니다. 하나의 이벤트 핸들러에 대해 두 개의 작업이 추가됩니다. 그 다음 a DtsEventHandlerEnumerator 가 생성되고, and MoveNext 메서드를 사용 Current 해 컬렉션을 탐색합니다.

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  

샘플 출력:

이 수집품에는 다음과 같은 값들이 포함되어 있습니다:

[0] OnError

[1] 경고

설명

열거자가 생성되거나 메서드를 Reset 호출한 후, 속성의 Current 값을 읽기 전에 열거자를 집합의 첫 번째 요소로 진행시키기 위해 메서드를 MoveNext 호출해야 합니다; 그렇지 않으면 는 Current 정의되지 않았으며 예외를 던집니다.

Current는 컬렉션의 끝을 나타내는 반환MoveNextfalse 마지막 호출인 경우 예외를 throw합니다.

Current에서는 열거자의 위치를 이동하지 않으며, 같은 개체를 호출하거나 Current 호출할 때까지 MoveNext 동일한 개체를 반환하는 Reset 연속 호출이 수행됩니다.

컬렉션이 변경되지 않은 상태로 유지되는 한 열거자는 유효한 상태로 유지됩니다. 컬렉션에 요소를 추가, 수정, 삭제하는 등 변경이 이루어지면, 열거기는 무효화되어 복구 불가능해집니다; 따라서 다음 호출 MoveNextReset 은 또는 를 던집니다 InvalidOperationException. 만약 컬렉션이 호출 MoveNextCurrent사이에 수정되면, Current 열거기가 무효화되었더라도 해당 집합이 설정된 요소를 반환합니다.

적용 대상