DtsEnumerator Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Definisce una classe base astratta che implementa i metodi 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
- Ereditarietà
-
DtsEnumerator
- Derivato
- Implementazioni
Esempio
Il seguente esempio di codice aggiunge un'attività a un pacchetto e poi lo esegue. La raccolta degli avvisi viene mostrata creando un WarningEnumerator, che eredita da questa DtsEnumerator classe, e mostra ogni descrizione di avviso.
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
Output di esempio:
Gli avvisi di pacchetti contano prima di essere eseguiti: 0
SendMailTask: {34CAEFF9-64BF-401D-B646-C88B705DB971}
Gli avvisi del pacco contano dopo l'esecuzione del pacchetto: 2
La collezione contiene i seguenti valori:
[0] L'indirizzo nella linea From non è formato correttamente. Manca un @ o non è valido.
[1] Soggetto vuoto
Commenti
DtsEnumerator è l'interfaccia base per tutti gli enumeratori. Permette DtsEnumerator solo la lettura dei dati nella collezione e non viene utilizzata per modificare la collezione sottostante.
Inizialmente, l'enumeratore viene posizionato prima del primo elemento della raccolta. Reset riporta anche l'enumeratore in questa posizione. In questa posizione, la chiamata Current genera un'eccezione. Pertanto, è necessario chiamare per far avanzare MoveNext l'enumeratore al primo elemento della raccolta prima di leggere il valore di Current.
Current restituisce lo stesso oggetto finché non MoveNext viene chiamato o Reset . MoveNext imposta Current sull'elemento successivo.
Dopo aver passato la fine della raccolta, l'enumeratore viene posizionato dopo l'ultimo elemento della raccolta e la chiamata MoveNext restituisce false. Se l'ultima chiamata a MoveNext restituisce false, la chiamata Current genera un'eccezione. Per impostare Current di nuovo sul primo elemento della raccolta, è possibile chiamare Reset seguito da MoveNext.
Un enumeratore rimane valido finché la raccolta rimane invariata. Se vengono apportate modifiche alla raccolta, ad esempio l'aggiunta, la modifica o l'eliminazione di elementi, l'enumeratore viene invalidato in modo irreversibile e la chiamata successiva a MoveNext o Reset genera un'eccezione InvalidOperationException. Se la raccolta viene modificata tra MoveNext e Current, Current restituirà l'elemento su cui è impostato, anche se l'enumeratore è già invalidato.
L'enumeratore non ha accesso esclusivo alla collezione; Pertanto, enumerare attraverso una collezione non è una procedura thread-safe. Anche quando una raccolta viene sincronizzata, altri thread potrebbero comunque modificare la raccolta, causando la generazione di un'eccezione da parte dell'enumeratore. Per garantire la sicurezza dei thread durante l'enumerazione, puoi bloccare la collezione per tutta l'intera enumerazione o individuare le eccezioni derivanti da modifiche apportate da altri thread.
Costruttori
| Nome | Descrizione |
|---|---|
| DtsEnumerator(IEnumerator, DTSReadOnlyCollectionBase) |
Inizializza una nuova istanza della classe DtsEnumerator. |
Proprietà
| Nome | Descrizione |
|---|---|
| Current |
Ottiene l'elemento corrente nella raccolta. |
Metodi
| Nome | Descrizione |
|---|---|
| MoveNext() |
Sposta l'enumeratore all'elemento successivo della raccolta. |
| Reset() |
Imposta l'enumeratore sulla posizione iniziale, ovvero prima del primo elemento della raccolta. |