スクリプト コンポーネント (データ フロー タスク) とスクリプト タスク (制御フロー) からエラー イベントと情報イベントを発生させるための、類似しているが異なる構文を混同している可能性があります。コンポーネントのインテリセンスは、パラメータが pbCancel であるのに対し、fireAgain は情報タスクのパラメータに対応することを示しています。
スクリプト コンポーネント
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);
}
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
パラメータが参照によってであることを明示的に指定する必要はありません。これは、呼び出し時にも指定する C# の要件に対して、定義で行われているように見えるためです。 com/questions/4383167/byref-vs-byval-clarification">ByRef と ByVal の明確化
スクリプト タスク
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
まとめ
- C# では
ref
を指定する必要があります そしてout
キーワード。同義語ではありません - VB ならなんでもできる
- コンポーネントのエラー イベントにはキャンセル パラメータがあります