Vous pouvez confondre la syntaxe similaire mais différente pour le déclenchement des événements d'erreur et d'information des composants de script (tâche de flux de données) par rapport aux tâches de script (flux de contrôle). L'intellisense pour Component indique que le paramètre est pbCancel alors que fireAgain correspond au paramètre Information Task.
Composant de script
Exemple de composant de script 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);
}
Composant 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
Il n'est pas nécessaire de spécifier explicitement qu'un paramètre est par référence puisque cela semble être fait dans la définition par rapport à l'exigence C# de le spécifier également lors de l'invocation.Clarification ByRef vs ByVal
Tâche de script
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
Résumé
- C# vous oblige à spécifier
ref
etout
mots clés. Ce ne sont pas des synonymes - VB vous permet de faire n'importe quoi
- L'événement d'erreur dans les composants a un paramètre d'annulation