Możesz mylić podobną, ale inną składnię do uruchamiania zdarzeń błędów i informacji ze składników skryptu (zadanie przepływu danych) i zadań skryptu (przepływ sterowania). Intellisense dla Component wskazuje, że parametr to pbCancel, podczas gdy fireAgain odpowiada parametrowi zadania informacyjnego.
Komponent skryptu
Przykład komponentu skryptu 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);
}
Komponent 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
Nie ma potrzeby jawnego określania, że parametr jest przez odniesienie, ponieważ wydaje się, że jest to zrobione w definicji w przeciwieństwie do wymogu C#, aby określić go również przy wywołaniu.ByRef vs ByVal Clarification
Zadanie skryptu
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
Podsumowanie
- C# wymaga podania
ref
iout
słowa kluczowe. To nie są synonimy - VB pozwala robić wszystko
- Zdarzenie błędu w komponentach ma parametr anulowania