Bạn có thể nhầm lẫn cú pháp tương tự nhưng khác nhau để kích hoạt sự kiện lỗi so với thông tin từ Thành phần Tập lệnh (tác vụ luồng dữ liệu) so với Nhiệm vụ tập lệnh (luồng điều khiển). Intellisense cho Component chỉ ra rằng tham số là pbCancel trong khi fireAgain tương ứng với tham số của Nhiệm vụ thông tin.
Thành phần tập lệnh
Ví dụ về thành phần tập lệnh 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);
}
Thành phần 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
Không cần phải chỉ định rõ ràng rằng một tham số là By Reference vì điều đó dường như được thực hiện trong định nghĩa so với yêu cầu C # để chỉ định nó cũng khi gọi. ByRef vs ByVal Clarification
Tác vụ tập lệnh
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
Tóm tắt
- C # yêu cầu bạn chỉ định
ref
vàout
từ khóa. Chúng không phải là từ đồng nghĩa - VB cho phép bạn làm bất cứ điều gì
- Sự kiện lỗi trong Thành phần có tham số hủy