PackageInfoEnumerator.Current Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve el elemento actual PackageInfo de la colección.
public:
property Microsoft::SqlServer::Dts::Runtime::PackageInfo ^ Current { Microsoft::SqlServer::Dts::Runtime::PackageInfo ^ get(); };
public Microsoft.SqlServer.Dts.Runtime.PackageInfo Current { get; }
member this.Current : Microsoft.SqlServer.Dts.Runtime.PackageInfo
Public ReadOnly Property Current As PackageInfo
Valor de propiedad
Un objeto PackageInfo.
Ejemplos
El siguiente ejemplo de código carga dos paquetes desde la carpeta Samples y los guarda en el servicio DTS. Luego crea un enumerador y utiliza el MoveNext y Current los métodos para iterar entre los paquetes e imprimir sus nombres.
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
namespace PackageInfoTest
{
class Program
{
static void Main(string[] args)
{
string pkg = @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\ExecuteProcess Sample\ExecuteProcess\UsingExecuteProcess.dtsx";
string pkg2 = @"C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx";
Application app = new Application();
Package p1 = app.LoadPackage(pkg, null);
Package p2 = app.LoadPackage(pkg2, null);
p1.Description = "UsingExecuteProcess package";
p2.Description = "Calculated Columns package";
app.SaveToDtsServer(p1, null, @"File System\myp1Package", "YOURSERVER");
app.SaveToDtsServer(p2, null, @"File System\myp2Package", "YOURSERVER");
PackageInfos pInfos = app.GetDtsServerPackageInfos(@"File System", "YOURSERVER");
Console.WriteLine("Number of Packages {0}", pInfos.Count.ToString());
PackageInfoEnumerator iEnum = pInfos.GetEnumerator();
while (iEnum.MoveNext())
{
String pkgName = iEnum.Current.Name;
Console.WriteLine(pkgName);
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SqlServer.Dts.Runtime
Namespace PackageInfoTest
Class Program
Shared Sub Main(ByVal args() As String)
Dim pkg As String = "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\ExecuteProcess Sample\ExecuteProcess\UsingExecuteProcess.dtsx"
Dim pkg2 As String = "C:\Program Files\Microsoft SQL Server\100\Samples\Integration Services\Package Samples\CalculatedColumns Sample\CalculatedColumns\CalculatedColumns.dtsx"
Dim app As Application = New Application()
Dim p1 As Package = app.LoadPackage(pkg,Nothing)
Dim p2 As Package = app.LoadPackage(pkg2,Nothing)
p1.Description = "UsingExecuteProcess package"
p2.Description = "Calculated Columns package"
app.SaveToDtsServer(p1, Nothing, "File System\myp1Package", "YOURSERVER")
app.SaveToDtsServer(p2, Nothing, "File System\myp2Package", "YOURSERVER")
Dim pInfos As PackageInfos = app.GetDtsServerPackageInfos("File System","YOURSERVER")
Console.WriteLine("Number of Packages {0}", pInfos.Count.ToString())
Dim iEnum As PackageInfoEnumerator = pInfos.GetEnumerator()
While iEnum.MoveNext()
Dim pkgName As String = iEnum.Current.Name
Console.WriteLine(pkgName)
End While
End Sub
End Class
End Namespace
Salida de muestra:
Número de paquetes 2
myp1Package
myp2Package
Comentarios
Después de crear un enumerador, o tras una llamada al Reset método, el MoveNext método debe ser llamado para avanzar al enumerador al primer elemento de la colección antes de que pueda leer el valor de la Current propiedad; de lo contrario, Current es indefinido y lanza una excepción.
Currenttambién produce una excepción si se devuelve MoveNextla última llamada a false , que indica el final de la colección.
Current no mueve la posición del enumerador y las llamadas consecutivas para devolver el mismo objeto hasta que se llama a Current o MoveNextReset .
Un enumerador sigue siendo válido siempre que la colección permanezca sin cambios. Si se realizan cambios en la colección, como añadir, modificar o eliminar elementos, el enumerador queda invalidado y se vuelve irrecuperable; por lo tanto, la siguiente llamada a MoveNext o Reset lanza un InvalidOperationException. Sin embargo, si la colección se modifica entre llamadas a MoveNext y Current, Current devuelve el elemento al que está asignada, incluso si el enumerador ha sido invalidado.