Freigeben über


PrecedenceConstraintEnumerator.Current Eigenschaft

Definition

Ruft das aktuelle PrecedenceConstraint-Element in der Auflistung ab.

public:
 property Microsoft::SqlServer::Dts::Runtime::PrecedenceConstraint ^ Current { Microsoft::SqlServer::Dts::Runtime::PrecedenceConstraint ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.PrecedenceConstraint Current { get; }
member this.Current : Microsoft.SqlServer.Dts.Runtime.PrecedenceConstraint
Public ReadOnly Property Current As PrecedenceConstraint

Eigenschaftswert

PrecedenceConstraint

Das aktuelle PrecedenceConstraint-Objekt.

Beispiele

Im folgenden Codebeispiel werden zwei Vorrangeinschränkungen erstellt. Anschließend wird Contains verwendet, um die Existenz einer bestimmten Einschränkung zu überprüfen, die Anzahl der Einschränkungen vor und nach der Verwendung der Remove Methode zu zählen, und zeigt, wie Sie die GetEnumerator Auflistung mithilfe der Syntax pConsts[i].IDID der Einschränkung iterierenItem[].

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

namespace PrecedenceConst  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            Package pkg = new Package();  
            // Add a File System task.  
            Executable eFileTask1 = pkg.Executables.Add("STOCK:FileSystemTask");  
            TaskHost thFileTask1 = eFileTask1 as TaskHost;  

            // Add a second File System task.  
            Executable eFileTask2 = pkg.Executables.Add("STOCK:FileSystemTask");  
            TaskHost thFileTask2 = eFileTask2 as TaskHost;  

            // Add a Bulk Insert task.  
            Executable eBulkInsert = pkg.Executables.Add("STOCK:BulkInsertTask");  
            TaskHost thBulkInsert = eBulkInsert as TaskHost;  

            // Add a precedence constraint between eFileTask1 and eFileTask2.  
            // Set the constraint to be that eFileTask2 cannot run   
            // until eFileTask1 completes.  
            PrecedenceConstraint pcFileTasks = pkg.PrecedenceConstraints.Add(eFileTask1, eFileTask2);  
            pcFileTasks.Name = "constraint between File System Tasks";  

            // Add another precedence constraint. Add it between eFileTask2 and BulkInsert.  
            // Again, set the constraint to be that BulkInsert cannot run   
            // until eFileTask2 completes.  
            PrecedenceConstraint pcFiletoBulk = pkg.PrecedenceConstraints.Add(eFileTask2, eBulkInsert);  
            pcFileTasks.Name = "constraint between File System and Bulk Insert Tasks";  

            // Obtain the precedence constraint collection.  
            PrecedenceConstraints pConsts = pkg.PrecedenceConstraints;  
            Boolean containsConstraint = pkg.PrecedenceConstraints.Contains("constraint between File System and Bulk Insert Tasks");  
            Console.WriteLine("Contains the constraint between File System and Bulk Insert Tasks? {0}", containsConstraint);  

            // Create the enumerator.  
            PrecedenceConstraintEnumerator myEnumerator = pConsts.GetEnumerator();  
            // Iterate over the collection, and remove the Bulk Insert task.  
            int i = 0;  
            while ((myEnumerator.MoveNext()) && (myEnumerator.Current != null))  
            {  
                Console.WriteLine("ID {0}", pConsts[i].ID);  
            }  

            Console.WriteLine("Number of constraints {0}", pConsts.Count);  
            // Remove the second contstraint.  
            pConsts.Remove(1);  
            // Verify that one has been removed.  
            Console.WriteLine("Number of constraints {0}", pConsts.Count);  

            Console.WriteLine();  
        }  
    }  
}  
Imports System  
Imports System.Collections.Generic  
Imports System.Text  
Imports Microsoft.SqlServer.Dts.Runtime  
Imports Microsoft.SqlServer.Dts.Tasks.FileSystemTask  
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask  

Namespace PrecedenceConst  
    Class Program  
        Shared  Sub Main(ByVal args() As String)  
            Dim pkg As Package =  New Package()   
            ' Add a File System task.  
            Dim eFileTask1 As Executable =  pkg.Executables.Add("STOCK:FileSystemTask")   
            Dim thFileTask1 As TaskHost =  eFileTask1 as TaskHost   

            ' Add a second File System task.  
            Dim eFileTask2 As Executable =  pkg.Executables.Add("STOCK:FileSystemTask")   
            Dim thFileTask2 As TaskHost =  eFileTask2 as TaskHost   

            ' Add a Bulk Insert task.  
            Dim eBulkInsert As Executable =  pkg.Executables.Add("STOCK:BulkInsertTask")   
            Dim thBulkInsert As TaskHost =  eBulkInsert as TaskHost   

            ' Add a precedence constraint between eFileTask1 and eFileTask2.  
            ' Set the constraint to be that eFileTask2 cannot run   
            ' until eFileTask1 completes.  
            Dim pcFileTasks As PrecedenceConstraint =  pkg.PrecedenceConstraints.Add(eFileTask1,eFileTask2)   
            pcFileTasks.Name = "constraint between File System Tasks"  

            ' Add another precedence constraint. Add it between eFileTask2 and BulkInsert.  
            ' Again, set the constraint to be that BulkInsert cannot run   
            ' until eFileTask2 completes.  
            Dim pcFiletoBulk As PrecedenceConstraint =  pkg.PrecedenceConstraints.Add(eFileTask2,eBulkInsert)   
            pcFileTasks.Name = "constraint between File System and Bulk Insert Tasks"  

            ' Obtain the precedence constraint collection.  
            Dim pConsts As PrecedenceConstraints =  pkg.PrecedenceConstraints   
            Dim containsConstraint As Boolean =  pkg.PrecedenceConstraints.Contains("constraint between File System and Bulk Insert Tasks")   
            Console.WriteLine("Contains the constraint between File System and Bulk Insert Tasks? {0}", containsConstraint)  

            ' Create the enumerator.  
            Dim myEnumerator As PrecedenceConstraintEnumerator =  pConsts.GetEnumerator()   
            ' Iterate over the collection, and remove the Bulk Insert task.  
            Dim i As Integer =  0   
            While (myEnumerator.MoveNext()) &&(myEnumerator.Current <> Nothing)  
                Console.WriteLine("ID {0}", pConsts(i).ID)  
            End While  

            Console.WriteLine("Number of constraints {0}", pConsts.Count)  
            ' Remove the second contstraint.  
            pConsts.Remove(1)  
            ' Verify that one has been removed.  
            Console.WriteLine("Number of constraints {0}", pConsts.Count)  

            Console.WriteLine()  
        End Sub  
    End Class  
End Namespace  

Beispielausgabe:

Enthält die Einschränkung zwischen Dateisystem und Masseneinfügeaufgaben? True

ID {BA42AF32-3AC1-4CB6-85A2-289760ADBFA4}

ID {BA42AF32-3AC1-4CB6-85A2-289760ADBFA4}

Anzahl der Einschränkungen 2

Anzahl der Einschränkungen 1

Hinweise

Nachdem ein Aufzählerator erstellt wurde, oder nachdem ein Aufruf Reset der Methode aufgerufen wurde, muss die MoveNext Methode aufgerufen werden, um den Aufzählungsator auf das erste Element der Auflistung zu aktualisieren, bevor der Aufzählungsator den Wert Current der Eigenschaft lesen kann; andernfalls Current wird eine Ausnahme ausgelöst.

Current Löst auch eine Ausnahme aus, wenn der letzte Aufruf zurückgegeben wird MoveNextfalse, der das Ende der Auflistung angibt.

Current verschiebt die Position des Enumerators nicht, und fortlaufende Aufrufe, um Current dasselbe Objekt zurückzugeben, bis sie entweder MoveNext oder Reset aufgerufen wird.

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 ungültig und kann nicht wiederhergestellt werden; So wird der nächste Aufruf an MoveNext oder Reset löst eine InvalidOperationException. Wenn die Auflistung zwischen MoveNext aufrufen und Currentgeändert wird, Current gibt das Element zurück, auf das er festgelegt ist, auch wenn der Aufzählungsator ungültig wurde.

Gilt für: