Potresti confondere la sintassi simile ma diversa per l'attivazione di errori rispetto agli eventi informativi da Componenti script (attività flusso di dati) rispetto a Attività script (flusso di controllo). Intellisense for Component indica che il parametro è pbCancel mentre fireAgain corrisponde al parametro dell'attività di informazione.
Componente script
Esempio di componente di 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);
}
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
Non è necessario specificare in modo esplicito che un parametro è Per riferimento poiché ciò sembra essere fatto nella definizione rispetto al requisito C# per specificarlo anche durante la chiamata.Chiarimento ByRef vs ByVal
Attività 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
Riepilogo
- C# richiede di specificare
ref
eout
parole chiave. Non sono sinonimi - VB ti consente di fare qualsiasi cosa
- L'evento di errore nei componenti ha un parametro di annullamento