DtsEnumerator 클래스

정의

IEnumerator 메서드를 구현 하는 추상 기본 클래스를 정의 합니다.

public ref class DtsEnumerator abstract : System::Collections::IEnumerator
public abstract class DtsEnumerator : System.Collections.IEnumerator
type DtsEnumerator = class
    interface IEnumerator
Public MustInherit Class DtsEnumerator
Implements IEnumerator
상속
DtsEnumerator
파생
구현

예제

다음 코드 예제에서는 패키지에 태스크를 추가 하 고 패키지를 실행 합니다. 경고 컬렉션은 WarningEnumerator 이 클래스에서 상속 되는를 만들고 DtsEnumerator 각 경고 설명을 표시 하는 방법으로 표시 됩니다.

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

namespace Microsoft.SqlServer.SSIS.Samples  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Package package = new Package();  
            Console.WriteLine("Package warnings count before running: {0}", package.Warnings.Count);  

            TaskHost taskH2 = (TaskHost)package.Executables.Add("STOCK:SendMailTask");  
            taskH2.FailPackageOnFailure = false;  
            taskH2.FailParentOnFailure = false;  
            Console.WriteLine("SendMailTask: {0}", taskH2.ID);  

            // Test that warnings were successfully added to the collection.  
            package.MaximumErrorCount = 100;  
            package.FailPackageOnFailure = false;  
            package.FailParentOnFailure = false;  
            package.DelayValidation = true;  
            package.Execute();  

            Console.WriteLine("Package warnings count after running the package: {0}", package.Warnings.Count);  

            // Create the enumerator.  
            WarningEnumerator myEnumerator = package.Warnings.GetEnumerator();  
            Console.WriteLine("The collection contains the following values:");  
            int i = 0;  
            while ((myEnumerator.MoveNext()) && (myEnumerator.Current != null))  
                Console.WriteLine("[{0}] {1}", i++, myEnumerator.Current.Description);  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  
Imports Microsoft.SqlServer.Dts.Tasks.ExecuteSQLTask  

Namespace Microsoft.SqlServer.SSIS.Samples  
    Class Program  
        Shared  Sub Main(ByVal args() As String)  
            Dim package As Package =  New Package()   
            Console.WriteLine("Package warnings count before running: {0}", package.Warnings.Count)  

            Dim taskH2 As TaskHost = CType(package.Executables.Add("STOCK:SendMailTask"), TaskHost)  
            taskH2.FailPackageOnFailure = False  
            taskH2.FailParentOnFailure = False  
            Console.WriteLine("SendMailTask: {0}", taskH2.ID)  

            ' Test that warnings were successfully added to the collection.  
            package.MaximumErrorCount = 100  
            package.FailPackageOnFailure = False  
            package.FailParentOnFailure = False  
            package.DelayValidation = True  
            package.Execute()  

            Console.WriteLine("Package warnings count after running the package: {0}", package.Warnings.Count)  

            ' Create the enumerator.  
            Dim myEnumerator As WarningEnumerator =  package.Warnings.GetEnumerator()   
            Console.WriteLine("The collection contains the following values:")  
            Dim i As Integer =  0   
            While (myEnumerator.MoveNext()) &&(myEnumerator.Current <> Nothing)  
                Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1  
            End While  
        End Sub  
    End Class  
End Namespace  

샘플 출력:

실행 전 패키지 경고 수: 0

SendMailTask: {34CAEFF9-64BF-401D-B646-C88B705DB971}

패키지를 실행 한 후의 패키지 경고 수: 2

컬렉션에는 다음 값이 포함 됩니다.

[0] 보낸 사람 줄의 주소 형식이 잘못 되었습니다. @가 없거나 잘못 되었습니다.

[1] 제목이 비어 있습니다.

설명

DtsEnumerator 는 모든 열거자의 기본 인터페이스입니다. 는 DtsEnumerator 컬렉션의 데이터를 읽을 수 있도록 허용 하며 기본 컬렉션을 수정 하는 데 사용 되지 않습니다.

처음에 열거자는 컬렉션의 첫 번째 요소 앞에 배치됩니다. Reset을 실행하면 열거자가 이 위치로 복원됩니다. 이 위치에서, 호출 Current 예외를 throw 합니다. 따라서 MoveNext의 값을 읽기 전에 Current를 호출하여 열거자를 해당 컬렉션의 첫 번째 요소로 보내야 합니다.

Current에서는 MoveNext 또는 Reset이 호출될 때까지 동일한 개체를 반환합니다. MoveNextCurrent를 다음 요소로 설정합니다.

컬렉션의 끝이 전달된 후 열거자는 컬렉션의 마지막 요소 뒤에 배치되고 MoveNext를 호출하면 false가 반환됩니다. 마지막으로 호출 하는 경우 MoveNext 반환 false호출, Current 예외를 throw 합니다. Current를 컬렉션의 첫째 요소에 다시 설정하려면 Reset을 호출한 뒤 MoveNext를 호출해야 합니다.

컬렉션이 변경되지 않고 그대로 유지되는 한 열거자는 유효한 상태로 유지됩니다. 변경에 추가 하는 등 컬렉션을 수정 하거나 요소를 삭제, 열거자가 복구할 유효 하지 않으며을 다음에 호출할 MoveNext 또는 Reset throw는 InvalidOperationException합니다. MoveNextCurrent 사이에 컬렉션이 수정되면 열거자가 이미 무효로 되었어도 Current는 컬렉션이 설정된 요소를 반환합니다.

열거자에 컬렉션에 대 한 단독 액세스 권한이 없는 경우 따라서 컬렉션 전체를 열거 하는 것은 스레드로부터 안전 하지 않습니다. 컬렉션이 동기화 된 경우 다른 스레드 수 수정할 하면 열거자가 예외를 throw 하는 컬렉션입니다. 열거 하는 동안 스레드로부터 안전을 보장 하려면 전체 열거 동안 컬렉션을 잠그거나 다른 스레드에서 변경한 내용으로 인해 발생 하는 예외를 catch 하면 됩니다.

생성자

DtsEnumerator(IEnumerator, DTSReadOnlyCollectionBase)

DtsEnumerator 클래스의 새 인스턴스를 초기화합니다.

속성

Current

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

메서드

MoveNext()

열거자를 컬렉션의 다음 요소로 이동합니다.

Reset()

컬렉션의 첫 번째 요소 앞의 초기 위치에 열거자를 설정합니다.

적용 대상