DtsEnumerator Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Definiert eine abstrakte Basisklasse, die die IEnumerator-Methoden implementiert.
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
- Vererbung
-
DtsEnumerator
- Abgeleitet
- Implementiert
Beispiele
Im folgenden Codebeispiel wird dem Paket dann ein Vorgang hinzugefügt. Die Warnungssammlung wird angezeigt, indem sie eine WarningEnumerator, die von dieser DtsEnumerator Klasse erbt, erstellt und jede Warnungsbeschreibung anzeigt.
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
Beispielausgabe:
Paketwarnungen zählen vor dem Ausführen: 0
SendMailTask: {34CAEFF9-64BF-401D-B646-C88B705DB971}
Paketwarnungen zählen nach dem Ausführen des Pakets: 2
Die Auflistung enthält die folgenden Werte:
[0] Die Adresse in der Zeile "Aus" wird nicht ordnungsgemäß gebildet. Es fehlt ein @, oder es ist ungültig.
[1] Betreff ist leer
Hinweise
DtsEnumerator ist die Basisschnittstelle für alle Enumeratoren. Dies DtsEnumerator ermöglicht nur das Lesen der Daten in der Sammlung und wird nicht verwendet, um die zugrunde liegende Auflistung zu ändern.
Zu Beginn wird der Enumerator vor das erste Element in der Auflistung positioniert. Reset setzt den Enumerator ebenfalls auf diese Position zurück. An dieser Position löst das Aufrufen Current eine Ausnahme aus. Daher muss der Enumerator durch einen Aufruf von MoveNext auf das erste Element der Auflistung gesetzt werden, bevor der Wert von Current gelesen werden kann.
Current gibt solange dasselbe Objekt zurück, bis MoveNext oder Reset aufgerufen wird. MoveNext legt Current auf das nächste Element fest.
Nach Erreichen des Endes der Auflistung befindet sich der Enumerator hinter dem letzten Element der Auflistung, und ein Aufruf von MoveNext gibt false
zurück. Wenn der letzte aufruf, der zurückgegeben false
werden sollMoveNext, löst der Aufruf Current eine Ausnahme aus. Um Current wieder auf das erste Element der Auflistung festzulegen, können Sie Reset gefolgt von MoveNext aufrufen.
Ein Enumerator bleibt gültig, solange die Auflistung unverändert bleibt. Wenn Änderungen an der Auflistung vorgenommen werden, z. B. Hinzufügen, Ändern oder Löschen von Elementen, wird der Aufzählungsator unaufwendbar ungültig und der nächste Aufruf an MoveNext oder Reset löst eine InvalidOperationException
. Wenn die Auflistung zwischen MoveNext und Current geändert wird, gibt Current das Element zurück, auf das der Enumerator gesetzt wurde, auch wenn er bereits ungültig ist.
Der Aufzählerator hat keinen exklusiven Zugriff auf die Sammlung; Daher ist die Aufzählung durch eine Auflistung keine Thread-sichere Prozedur. Selbst wenn eine Auflistung synchronisiert wird, könnte andere Threads die Auflistung weiterhin ändern, wodurch der Aufzählungsator eine Ausnahme ausgelöst wird. Um die Threadsicherheit während der Aufzählung zu gewährleisten, können Sie die Auflistung während der gesamten Enumeration sperren oder die Ausnahmen erfassen, die aus Änderungen von anderen Threads resultieren.
Konstruktoren
DtsEnumerator(IEnumerator, DTSReadOnlyCollectionBase) |
Initialisiert eine neue Instanz der DtsEnumerator-Klasse. |
Eigenschaften
Current |
Ruft das aktuelle Element in der Auflistung ab. |
Methoden
MoveNext() |
Setzt den Enumerator auf das nächste Element der Auflistung. |
Reset() |
Setzt den Enumerator auf seine anfängliche Position vor dem ersten Element in der Auflistung. |