Você pode estar confundindo a sintaxe semelhante, mas diferente, para disparar erros versus eventos de informações de Componentes de Script (tarefa de fluxo de dados) versus Tarefas de Script (fluxo de controle). O intellisense para Component indica que o parâmetro é pbCancel enquanto o fireAgain corresponde ao parâmetro da Tarefa de Informação.
Componente de script
Exemplo de componente de 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
Não há necessidade de especificar explicitamente que um parâmetro é Por referência, pois isso parece ser feito na definição versus o requisito do C# para especificá-lo também na invocação.ByRef vs ByVal Esclarecimento
Tarefa de 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
Resumo
- C# requer que você especifique
ref
eout
palavras-chave. Eles não são sinônimos - VB permite que você faça qualquer coisa
- Evento de erro em Componentes tem um parâmetro de cancelamento