Možná si pletete podobnou, ale odlišnou syntaxi pro spouštění chybových a informačních událostí z komponent skriptu (úloha toku dat) versus úlohy skriptu (tok řízení). Intellisense for Component udává, že parametr je pbCancel, zatímco fireAgain odpovídá parametru Information Task.
Komponenta skriptu
Příklad komponenty skriptu 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);
}
Komponenta 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
Není potřeba explicitně specifikovat, že parametr je podle odkazu, protože to vypadá, že je to provedeno v definici oproti požadavku C# na jeho specifikaci také při vyvolání.ByRef vs ByVal Clarification
Úloha skriptu
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
Shrnutí
- C# vyžaduje, abyste zadali
ref
aout
klíčová slova. Nejsou to synonyma - VB vám umožní dělat cokoli
- Událost chyby v komponentách má parametr zrušení