DtsEnumerator Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendefinisikan kelas dasar abstrak yang mengimplementasikan metode 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
- Warisan
-
DtsEnumerator
- Turunan
- Penerapan
Contoh
Contoh kode berikut menambahkan tugas ke paket lalu menjalankan paket. Koleksi peringatan ditampilkan dengan membuat WarningEnumerator, yang mewarisi dari kelas ini DtsEnumerator , dan menampilkan setiap deskripsi peringatan.
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
Contoh Output:
Jumlah peringatan paket sebelum berjalan: 0
SendMailTask: {34CAEFF9-64BF-401D-B646-C88B705DB971}
Jumlah peringatan paket setelah menjalankan paket: 2
Koleksi berisi nilai berikut:
[0] Alamat di baris Dari tidak terbentuk dengan benar. Ini kehilangan @ atau tidak valid.
[1] Subjek kosong
Keterangan
DtsEnumerator adalah antarmuka dasar untuk semua enumerator. hanya DtsEnumerator memungkinkan pembacaan data dalam koleksi dan tidak digunakan untuk memodifikasi koleksi yang mendasar.
Awalnya, enumerator diposisikan sebelum elemen pertama dalam koleksi. Reset juga membawa enumerator kembali ke posisi ini. Pada posisi ini, panggilan Current melemparkan pengecualian. Oleh karena itu, Anda harus memanggil MoveNext untuk memajukan enumerator ke elemen pertama koleksi sebelum membaca nilai Current.
Current mengembalikan objek yang sama hingga atau MoveNextReset dipanggil. MoveNextCurrent mengatur ke elemen berikutnya.
Setelah akhir koleksi dilewatkan, enumerator diposisikan setelah elemen terakhir dalam koleksi, dan panggilan MoveNext mengembalikan false
. Jika panggilan terakhir untuk MoveNext dikembalikan false
, panggilan Current akan melemparkan pengecualian. Untuk mengatur Current ke elemen pertama koleksi lagi, Anda dapat memanggil Reset diikuti dengan MoveNext.
Enumerator tetap valid selama koleksi tetap tidak berubah. Jika perubahan dilakukan pada koleksi, seperti menambahkan, memodifikasi, atau menghapus elemen, enumerator tidak valid dan panggilan berikutnya ke MoveNext atau Reset melemparkan InvalidOperationException
. Jika koleksi dimodifikasi antara MoveNext dan Current, Current akan mengembalikan elemen yang diatur ke, bahkan jika enumerator sudah tidak valid.
Enumerator tidak memiliki akses eksklusif ke koleksi; oleh karena itu, menghitung melalui koleksi bukanlah prosedur yang aman untuk utas. Bahkan ketika koleksi disinkronkan, utas lain masih dapat memodifikasi koleksi, yang menyebabkan enumerator melemparkan pengecualian. Untuk menjamin keamanan utas selama enumerasi, Anda dapat mengunci koleksi selama seluruh enumerasi atau menangkap pengecualian yang dihasilkan dari perubahan yang dibuat oleh utas lain.
Konstruktor
DtsEnumerator(IEnumerator, DTSReadOnlyCollectionBase) |
Menginisialisasi instans baru kelas DtsEnumerator. |
Properti
Current |
Mendapatkan elemen saat ini dalam koleksi. |
Metode
MoveNext() |
Memajukan enumerator ke elemen koleksi berikutnya. |
Reset() |
Mengatur enumerator ke posisi awalnya, yaitu sebelum elemen pertama dalam koleksi. |