Klasa DtsEnumerator
Definiuje abstrakcyjna klasa podstawowa, który implementuje elemencie IEnumerator metody.
Hierarchia dziedziczenia
System.Object
Microsoft.SqlServer.Dts.Runtime.DtsEnumerator
Więcej...
Przestrzeń nazw: Microsoft.SqlServer.Dts.Runtime
Zestaw: Microsoft.SqlServer.ManagedDTS (w Microsoft.SqlServer.ManagedDTS.dll)
Składnia
'Deklaracja
Public MustInherit Class DtsEnumerator _
Implements IEnumerator
'Użycie
Dim instance As DtsEnumerator
public abstract class DtsEnumerator : IEnumerator
public ref class DtsEnumerator abstract : IEnumerator
[<AbstractClassAttribute>]
type DtsEnumerator =
class
interface IEnumerator
end
public abstract class DtsEnumerator implements IEnumerator
Typ DtsEnumerator uwidacznia następujące elementy członkowskie.
Metody
Nazwa | Opis | |
---|---|---|
Equals | (Dziedziczony z Object). | |
Finalize | (Dziedziczony z Object). | |
GetHashCode | (Dziedziczony z Object). | |
GetType | (Dziedziczony z Object). | |
MemberwiseClone | (Dziedziczony z Object). | |
MoveNext | Moduł wyliczający przechodzi do następnego elementu kolekcja. | |
Reset | Ustawia modułu wyliczającego do jej początkowego położenia, przed pierwszym elementem kolekcja. | |
ToString | (Dziedziczony z Object). |
Do góry
Uwagi
DtsEnumeratorwszystkie moduły wyliczające jest interfejs podstawowy.DtsEnumerator Umożliwia tylko do odczytu danych kolekcja i nie jest używane do modyfikowania źródłowej kolekcja.
Początkowo moduł wyliczający jest umieszczony przed pierwszym elementem kolekcja.Resetrównież przełącza modułu wyliczającego do tej pozycji.Co to położenie, wywołując Current zgłasza wyjątek.Dlatego należy wywołać MoveNext z wyprzedzeniem modułu wyliczającego do pierwszego elementu kolekcja przed odczytywania wartości Current.
Currentzwraca ten sam obiekt, aż do MoveNext lub Reset jest wywoływana.MoveNextUstawia Current do następnego elementu.
Po zakończeniu zbierania jest moduł wyliczający jest pozycjonowane za ostatnim elementem kolekcja i wywoływania MoveNext zwraca false.Jeśli wywołanie ostatniego MoveNext zwrócił false, wywołujący Current zgłasza wyjątek.Aby zestaw Current do pierwszego elementu kolekcja ponownie, można wywołać Reset po MoveNext.
Moduł wyliczający zachowuje ważność tak długo, jak długo kolekcja pozostaje niezmieniony.Jeśli zmian do kolekcja, takie jak dodawanie, modyfikowanie lub usuwanie elementów, moduł wyliczający bezpowrotnie unieważniona i wywołanie następnego MoveNext lub Reset generuje InvalidOperationException.Jeśli kolekcja jest zmodyfikowany między MoveNext i Current, Current zwraca element, który jest zestaw , nawet jeśli moduł wyliczający jest już unieważnionych.
Moduł wyliczający nie mieć wyłączny dostęp do kolekcja; Wyliczanie wszystkich elementów kolekcja nie jest więc procedurę bezpiecznego wątek.Nawet kiedy kolekcja jest synchronizowane, inne wątki nadal można zmodyfikować kolekcji, która powoduje, że moduł wyliczający w celu wygenerowania wyjątku.Aby zagwarantować bezpieczeństwo wątek podczas wyliczania, można blokada kolekcja podczas wyliczania całej lub połowów wyjątki, które powstają w wyniku zmian wprowadzonych przez innych wątków.
Przykłady
Poniższy przykład kodu dodaje zadanie do pakietu, a następnie uruchamia pakiet.Kolekcja ostrzeżenia jest wyświetlany przez tworzenie WarningEnumerator, która dziedziczy to DtsEnumerator Ostrzeżenie klasy i wyświetla każdy opis.
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
Przykładowe dane wyjściowe:
Pakiet liczba ostrzeżeń przed uruchomieniem: 0
SendMailTask: {34CAEFF9-64BF-401 D-B646-C88B705DB971}
Liczba ostrzeżeń pakiet po uruchomieniu tego pakietu: 2
Kolekcja zawiera następujące wartości:
[0] Adres w wierszu od nie jest poprawnie uformowany.Jest brak @ lub nie jest prawidłowy.
[1] Podmiotu jest pusty
Bezpieczeństwo wątków
Wszystkie publiczne statyczny (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne dla wątków. Nie ma gwarancji, że elementy członkowskie wystąpień będą bezpieczne dla wątków.
Hierarchia dziedziczenia
System.Object
Microsoft.SqlServer.Dts.Runtime.DtsEnumerator
Microsoft.SqlServer.Dts.Runtime.BreakpointTargetEnumerator
Microsoft.SqlServer.Dts.Runtime.ConfigurationEnumerator
Microsoft.SqlServer.Dts.Runtime.ConnectionEnumerator
Microsoft.SqlServer.Dts.Runtime.ConnectionInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.DBProviderInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.DtsEventHandlerEnumerator
Microsoft.SqlServer.Dts.Runtime.ErrorEnumerator
Microsoft.SqlServer.Dts.Runtime.EventInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.ExecutableEnumerator
Microsoft.SqlServer.Dts.Runtime.ExtendedPropertyEnumerator
Microsoft.SqlServer.Dts.Runtime.ForEachEnumeratorInfosEnumerator
Microsoft.SqlServer.Dts.Runtime.ForEachVariableMappingEnumerator
Microsoft.SqlServer.Dts.Runtime.LogEntryInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.LogProviderEnumerator
Microsoft.SqlServer.Dts.Runtime.LogProviderInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.PackageInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.PipelineComponentInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.PrecedenceConstraintEnumerator
Microsoft.SqlServer.Dts.Runtime.PropertyEnumerator
Microsoft.SqlServer.Dts.Runtime.RunningPackagesEnumerator
Microsoft.SqlServer.Dts.Runtime.TaskInfoEnumerator
Microsoft.SqlServer.Dts.Runtime.VariableEnumerator
Microsoft.SqlServer.Dts.Runtime.WarningEnumerator