Möglicherweise verwechseln Sie die ähnliche, aber unterschiedliche Syntax zum Auslösen von Fehler- und Informationsereignissen von Skriptkomponenten (Datenflussaufgabe) mit Skriptaufgaben (Steuerungsfluss). Das Intellisense für Component gibt an, dass der Parameter pbCancel ist, während fireAgain dem Parameter der Informationsaufgabe entspricht.
Skriptkomponente
Beispiel für eine C#-Skriptkomponente
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);
}
VB-Komponente
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
Es ist nicht erforderlich, explizit anzugeben, dass ein Parameter „By Reference“ ist, da dies anscheinend in der Definition im Gegensatz zur C#-Anforderung erfolgt, ihn auch beim Aufruf anzugeben.ByRef vs. ByVal-Klärung
Skriptaufgabe
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
Zusammenfassung
- C# erfordert, dass Sie
ref
angeben undout
Schlüsselwörter. Sie sind keine Synonyme - Mit VB können Sie alles tun
- Fehlerereignisse in Komponenten haben einen Abbruchparameter