PrecedenceConstraints.GetEnumerator Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает переписчик для итерации PrecedenceConstraints по коллекции.
public:
Microsoft::SqlServer::Dts::Runtime::PrecedenceConstraintEnumerator ^ GetEnumerator();
public Microsoft.SqlServer.Dts.Runtime.PrecedenceConstraintEnumerator GetEnumerator();
override this.GetEnumerator : unit -> Microsoft.SqlServer.Dts.Runtime.PrecedenceConstraintEnumerator
Public Function GetEnumerator () As PrecedenceConstraintEnumerator
Возвращаемое значение
Переписчик PrecedenceConstraintEnumerator для итерации коллекции.
Примеры
Следующий пример кода создаёт два ограничения по приоритету. Затем Contains используется для проверки существования конкретного ограничения, подсчитывается количество ограничений до и после использования Remove метода, а также показывает, как GetEnumerator использовать итерацию по коллекции, используя Item[] синтаксис для pConsts[i].ID возврата ID ограничения.
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
Пример вывода:
Содержит ограничение между задачами файловой системы и массовой вставки? True
ID {BA42AF32-3AC1-4CB6-85A2-289760ADBFA4}
ID {BA42AF32-3AC1-4CB6-85A2-289760ADBFA4}
Количество ограничений 2
Количество ограничений 1
Комментарии
Если вызов метода Contains возвращает true, вы можете получить доступ к указанному элементу коллекции с помощью синтаксиса PrecedenceConstraints[index]. Однако если Contains метод возвращает false, это свойство вызывает исключение. В C#это свойство является индексатором PrecedenceConstraints для класса.