U verwart misschien de vergelijkbare maar verschillende syntaxis voor activeringsfout versus informatiegebeurtenissen van scriptcomponenten (gegevensstroomtaak) versus scripttaken (besturingsstroom). De intellisense voor Component geeft aan dat de parameter pbCancel is, terwijl de fireAgain overeenkomt met de parameter van de informatietaak.
Scriptcomponent
Voorbeeld van C#-scriptcomponent
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-component
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
Het is niet nodig om expliciet te specificeren dat een parameter By Reference is, aangezien dat lijkt te gebeuren in de definitie versus de C#-vereiste om deze ook bij aanroep te specificeren.ByRef vs ByVal Clarification
Scripttaak
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
Samenvatting
- C# vereist dat je
ref
. opgeeft enout
trefwoorden. Het zijn geen synoniemen - VB laat je alles doen
- Foutgebeurtenis in Componenten heeft een annulatieparameter