DtsEventHandlerEnumerator.Current Properti
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.
Mendapatkan elemen saat ini dalam koleksi.
public:
property Microsoft::SqlServer::Dts::Runtime::DtsEventHandler ^ Current { Microsoft::SqlServer::Dts::Runtime::DtsEventHandler ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.DtsEventHandler Current { get; }
member this.Current : Microsoft.SqlServer.Dts.Runtime.DtsEventHandler
Public ReadOnly Property Current As DtsEventHandler
Nilai Properti
Elemen saat ini dalam koleksi.
Contoh
Sampel kode berikut membuat dua penanganan aktivitas untuk paket. Untuk satu penanganan aktivitas, dua tugas ditambahkan.
DtsEventHandlerEnumerator Kemudian dibuat, dan menggunakan Current metode dan MoveNext untuk menavigasi koleksi.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
using Microsoft.SqlServer.Dts.Tasks.SendMailTask;
using Microsoft.SqlServer.Dts.Tasks.BulkInsertTask;
namespace DtsEventHandler_API
{
class Program
{
static void Main(string[] args)
{
Package pkg = new Package();
// Set up a DtsEventHandler for the OnError event of the package.
DtsEventHandler dtsEHOE = (DtsEventHandler)pkg.EventHandlers.Add("OnError");
DtsEventHandler dtsEHW = (DtsEventHandler)pkg.EventHandlers.Add("OnWarning");
// When an OnError Event occurs, the Executables collection contains
// the items to run. For this example, there will be a SendMailtTask
// and a BulkInsertTask with a precedence constraint between them.
Executable dtsEH1 = dtsEHOE.Executables.Add("STOCK:SendMailTask");
TaskHost th = (TaskHost)dtsEH1;
SendMailTask smTask = (SendMailTask)th.InnerObject;
smTask.Subject = "Send Mail task";
// Add a second executable to the DtsEventHandler.
Executable dtsEH2 = dtsEHOE.Executables.Add("STOCK:BulkInsertTask");
TaskHost th2 = (TaskHost)dtsEH2;
//Create the Enumerator. Since we added the DtsEventhandler to the
// package, then that's where to get the EventHandlers collection.
DtsEventHandlerEnumerator myEnum = pkg.EventHandlers.GetEnumerator();
Console.WriteLine("The collection contains the following values:");
int i = 0;
while ((myEnum.MoveNext()) && (myEnum.Current != null))
Console.WriteLine("[{0}] {1}", i++, myEnum.Current.Name);
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Imports Microsoft.SqlServer.Dts.Tasks.SendMailTask
Imports Microsoft.SqlServer.Dts.Tasks.BulkInsertTask
Namespace DtsEventHandler_API
Class Program
Shared Sub Main(ByVal args() As String)
Dim pkg As Package = New Package()
' Set up a DtsEventHandler for the OnError event of the package.
Dim dtsEHOE As DtsEventHandler = CType(pkg.EventHandlers.Add("OnError"), DtsEventHandler)
Dim dtsEHW As DtsEventHandler = CType(pkg.EventHandlers.Add("OnWarning"), DtsEventHandler)
' When an OnError Event occurs, the Executables collection contains
' the items to run. For this example, there will be a SendMailtTask
' and a BulkInsertTask with a precedence constraint between them.
Dim dtsEH1 As Executable = dtsEHOE.Executables.Add("STOCK:SendMailTask")
Dim th As TaskHost = CType(dtsEH1, TaskHost)
Dim smTask As SendMailTask = CType(th.InnerObject, SendMailTask)
smTask.Subject = "Send Mail task"
' Add a second executable to the DtsEventHandler.
Dim dtsEH2 As Executable = dtsEHOE.Executables.Add("STOCK:BulkInsertTask")
Dim th2 As TaskHost = CType(dtsEH2, TaskHost)
'Create the Enumerator. Since we added the DtsEventhandler to the
' package, then that's where to get the EventHandlers collection.
Dim myEnum As DtsEventHandlerEnumerator = pkg.EventHandlers.GetEnumerator()
Console.WriteLine("The collection contains the following values:")
Dim i As Integer = 0
While (myEnum.MoveNext()) &&(myEnum.Current <> Nothing)
Console.WriteLine("[{0}] {1}",i = Console.WriteLine("[{0}] {1}",i + 1
End While
End Sub
End Class
End Namespace
Contoh Output:
Koleksi berisi nilai berikut:
[0] OnError
[1] OnWarning
Keterangan
Setelah enumerator dibuat, atau setelah panggilan ke Reset metode , MoveNext metode harus dipanggil untuk memajukan enumerator ke elemen pertama koleksi sebelum membaca nilai Current properti; jika tidak, Current tidak terdefinisi dan melempar pengecualian.
Current juga melempar pengecualian jika panggilan terakhir untuk MoveNext dikembalikan false, yang menunjukkan akhir koleksi.
Current tidak memindahkan posisi enumerator, dan panggilan berturut-turut untuk Current mengembalikan objek yang sama sampai atau MoveNextReset dipanggil.
Enumerator tetap valid selama koleksi tetap tidak berubah. Jika perubahan dilakukan pada koleksi, seperti menambahkan, memodifikasi, atau menghapus elemen, enumerator tidak valid dan menjadi tidak dapat dipulihkan; dengan demikian, panggilan berikutnya ke MoveNext atau Reset melempar InvalidOperationException. Jika koleksi dimodifikasi antara panggilan ke MoveNext dan Current, Current mengembalikan elemen yang diatur ke, bahkan jika enumerator telah dibatalkan.