Puede estar confundiendo la sintaxis similar pero diferente para activar eventos de error frente a información de componentes de secuencia de comandos (tarea de flujo de datos) frente a tareas de secuencia de comandos (flujo de control). El intellisense para Component indica que el parámetro es pbCancel mientras que fireAgain corresponde al parámetro de la Tarea de Información.
Componente de secuencia de comandos
Ejemplo de componente de secuencia de comandos C#
public override void Input0_ProcessInputRow(Input0Buffer Row)
{
bool cancel = false;
bool fireAgain = false;
this.ComponentMetaData.FireInformation(0, "My sub", "info", string.Empty, 0, ref fireAgain);
this.ComponentMetaData.FireError(0, "My sub", "error", string.Empty, 0, out cancel);
}
Componente VB
Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
Dim cancel As Boolean
Dim fireAgain As Boolean
Me.ComponentMetaData.FireInformation(0, "my sub", "info", String.Empty, 0, fireAgain)
Me.ComponentMetaData.FireError(0, "I hate vb", "Error", String.Empty, 0, cancel)
End Sub
No es necesario especificar explícitamente que un parámetro es Por referencia, ya que parece estar hecho en la definición frente al requisito de C# de especificarlo también en la invocación.Aclaración ByRef vs ByVal
Tarea de guión
C#
public void Main()
{
bool fireAgain = false;
this.Dts.Events.FireInformation(0, "my sub", "info", string.Empty, 0, ref fireAgain);
// Note, no cancel available
this.Dts.Events.FireError(0, "my sub", "error", string.Empty, 0);
}
VB
Public Sub Main()
Dim fireAgain As Boolean = False
Me.Dts.Events.FireInformation(0, "my sub", "info desc", String.Empty, 0, fireAgain)
Me.Dts.Events.FireError(0, "my sub", "error desc", String.Empty, 0)
Dts.TaskResult = ScriptResults.Success
End Sub
Resumen
- C# requiere que especifique
ref
yout
palabras clave No son sinónimos - VB te permite hacer lo que quieras
- El evento de error en los componentes tiene un parámetro de cancelación