데이터 흐름 구성 요소에서 이벤트 발생 및 정의Raising and Defining Events in a Data Flow Component

구성 요소 개발자는 IDTSComponentEvents 속성에 제공된 메서드를 호출하여 ComponentMetaData 인터페이스에 정의된 일부 이벤트를 발생시킬 수 있습니다.Component developers can raise a subset of the events defined in the IDTSComponentEvents interface by calling the methods exposed on the ComponentMetaData property. EventInfos 컬렉션을 사용하여 사용자 지정 이벤트를 정의하고 FireCustomEvent 메서드를 사용하여 실행하는 동안 해당 이벤트를 발생시킬 수도 있습니다.You can also define custom events by using the EventInfos collection, and raise them during execution by using the FireCustomEvent method. 이 섹션에서는 이벤트를 만들고 발생시키는 방법을 설명하고 디자인 타임에 이벤트를 발생시켜야 하는 경우에 대한 지침을 제공합니다.This section describes how to create and raise an event, and provides guidelines on when you should raise events at design time.

이벤트 발생Raising Events

구성 요소를 사용 하 여 이벤트를 발생 시킵니다.는 화재<X > 의 메서드는 IDTSComponentMetaData100 인터페이스입니다.Components raise events by using the Fire<X> methods of the IDTSComponentMetaData100 interface. 구성 요소를 디자인하거나 실행할 때 이벤트를 발생시킬 수 있습니다.You can raise events during component design and execution. 일반적으로 구성 요소를 디자인할 때는 유효성 검사 과정에서 FireErrorFireWarning 메서드가 호출됩니다.Typically, during component design, the FireError and FireWarning methods are called during validation. 메시지를 표시 하는 이러한 이벤트는 오류 목록 의 창 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT) 구성 요소가 잘못 구성 된 구성 요소의 사용자에 게 피드백을 제공 합니다.These events display messages in the Error List pane of SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT) and provide feedback to users of the component when a component is incorrectly configured.

또한 구성 요소에서는 실행 중 어느 시점에서나 이벤트를 발생시킬 수 있습니다.Components can also raise events at any point during execution. 구성 요소 개발자는 이벤트를 통해 구성 요소가 실행될 때 구성 요소 사용자에게 피드백을 제공할 수 있습니다.Events allow component developers to provide feedback to users of the component as it executes. 실행 중 FireError 메서드를 호출하면 패키지가 실패할 수 있습니다.Calling the FireError method during execution is likely to fail the package.

사용자 지정 이벤트 정의 및 발생Defining and Raising Custom Events

사용자 지정 이벤트 정의Defining a Custom Event

사용자 지정 이벤트는 Add 컬렉션의 EventInfos 메서드를 호출하여 만듭니다.Custom events are created by calling the Add method of the EventInfos collection. 이 컬렉션은 데이터 흐름 태스크에서 설정되며 PipelineComponent 기본 클래스를 통해 구성 요소 개발자에게 속성으로 제공됩니다.This collection is set by the data flow task and provided as a property to the component developer through the PipelineComponent base class. 이 클래스에는 데이터 흐름 태스크에서 정의된 사용자 지정 이벤트와 RegisterEvents 메서드 실행 중 구성 요소에서 정의된 사용자 지정 이벤트가 들어 있습니다.This class contains custom events defined by the data flow task and custom events defined by the component during the RegisterEvents method.

구성 요소의 사용자 지정 이벤트는 패키지 XML에 저장되지 않습니다.The custom events of a component are not persisted in the package XML. 따라서 구성 요소가 해당 구성 요소에서 발생하는 이벤트를 정의할 수 있도록 디자인할 때와 실행할 때 모두 RegisterEvents 메서드가 호출됩니다.Therefore, the RegisterEvents method is called during both design and execution to allow the component to define the events it raises.

allowEventHandlers 의 매개 변수는 Add 메서드는 구성 요소를 허용 하는지 여부를 지정 DtsEventHandler 개체를 이벤트에 대해 만들 수 있습니다.The allowEventHandlers parameter of the Add method specifies whether the component allows DtsEventHandler objects to be created for the event. DtsEventHandlers는 동기 개체이므로Note that DtsEventHandlers are synchronous. 구성 요소에서는 사용자 지정 이벤트에 연결된 DtsEventHandler가 실행을 마칠 때까지 실행을 다시 시작하지 않습니다.Therefore the component does not resume execution until an DtsEventHandler attached to the custom event has finished executing. 경우는 allowEventHandlers 매개 변수는 true, 이벤트의 각 매개 변수를 자동으로 제공할 모든 DtsEventHandler 만들어지고 자동으로 채워진 되는 변수를 통해 개체는 SQL ServerSQL Server Integration ServicesIntegration Services 런타임 합니다.If the allowEventHandlers parameter is true, each parameter of the event is automatically made available to any DtsEventHandler objects through variables that are created and populated automatically by the SQL ServerSQL Server Integration ServicesIntegration Services runtime.

사용자 지정 이벤트 발생Raising a Custom Event

구성 요소에서는 FireCustomEvent 메서드를 호출하고 이벤트의 이름, 텍스트 및 매개 변수를 제공하여 사용자 지정 이벤트를 발생시킵니다.Components raise custom events by calling the FireCustomEvent method, and providing the name, text, and parameters of the event. 경우는 allowEventHandlers 매개 변수는 true있으면 모든 DtsEventHandlers 에 의해 실행 되는 사용자 지정 이벤트에 대해 만들어진는 SSISSSIS 런타임 엔진입니다.If the allowEventHandlers parameter is true, any DtsEventHandlers that are created for the custom event are executed by the SSISSSIS run-time engine.

사용자 지정 이벤트 예제Custom Event Sample

다음 코드 예에서는 RegisterEvents 메서드 실행 중 사용자 지정 이벤트를 정의한 다음 런타임에 FireCustomEvent 메서드를 호출하여 이벤트를 발생시키는 구성 요소를 보여 줍니다.The following code example shows a component that defines a custom event during the RegisterEvents method, and then raises the event at run time by calling the FireCustomEvent method.

public override void RegisterEvents()  
{  
    string [] parameterNames = new string[2]{"RowCount", "StartTime"};  
    ushort [] parameterTypes = new ushort[2]{ DtsConvert.VarTypeFromTypeCode(TypeCode.Int32), DtsConvert.VarTypeFromTypeCode(TypeCode.DateTime)};  
    string [] parameterDescriptions = new string[2]{"The number of rows to sort.", "The start time of the Sort operation."};  
    EventInfos.Add("StartingSort","Fires when the component begins sorting the rows.",false,ref parameterNames, ref paramterTypes, ref parameterDescriptions);  
}  
public override void ProcessInput(int inputID, PipelineBuffer buffer)  
{  
    while (buffer.NextRow())  
    {  
       // Process buffer rows.  
    }  

    IDTSEventInfo100 eventInfo = EventInfos["StartingSort"];  
    object []arguments = new object[2]{buffer.RowCount, DateTime.Now };  
    ComponentMetaData.FireCustomEvent("StartingSort", "Beginning sort operation.", ref arguments, ComponentMetaData.Name, ref FireSortEventAgain);  
}  
Public  Overrides Sub RegisterEvents()   
  Dim parameterNames As String() = New String(2) {"RowCount", "StartTime"}   
  Dim parameterTypes As System.UInt16() = New System.UInt16(2) {DtsConvert.VarTypeFromTypeCode(TypeCode.Int32), DtsConvert.VarTypeFromTypeCode(TypeCode.DateTime)}   
  Dim parameterDescriptions As String() = New String(2) {"The number of rows to sort.", "The start time of the Sort operation."}   
  EventInfos.Add("StartingSort", "Fires when the component begins sorting the rows.", False, parameterNames, paramterTypes, parameterDescriptions)   
End Sub   

Public  Overrides Sub ProcessInput(ByVal inputID As Integer, ByVal buffer As PipelineBuffer)   
  While buffer.NextRow   
  End While   
  Dim eventInfo As IDTSEventInfo100 = EventInfos("StartingSort")   
  Dim arguments As Object() = New Object(2) {buffer.RowCount, DateTime.Now}   
  ComponentMetaData.FireCustomEvent("StartingSort", _  
    "Beginning sort operation.", arguments, _  
    ComponentMetaData.Name, FireSortEventAgain)   
End Sub  

관련 항목:See Also

Integration Services ( Ssis) 이벤트 처리기 Integration Services (SSIS) Event Handlers
패키지에 이벤트 처리기를 추가 합니다.Add an Event Handler to a Package