PipelineComponent.IsInputReady 메서드 (Int32[], Boolean[])

 

구성 요소에 연결된 입력 중 추가 데이터를 기다리고 있으며 처리하기에 충분한 데이터가 있고 차단되어 있는 입력을 확인합니다.

네임스페이스:   Microsoft.SqlServer.Dts.Pipeline
어셈블리:  Microsoft.SqlServer.PipelineHost(Microsoft.SqlServer.PipelineHost.dll에 있음)

public virtual void IsInputReady(
	int[] inputIDs,
	ref bool[] canProcess
)

매개 변수

inputIDs
Type: System.Int32[]

구성 요소에 연결된 입력의 ID로 구성된 배열입니다.

canProcess
Type: System.Boolean[]

참조로 전달된 각 입력이 추가 데이터를 기다리고 있는지(true), 아니면 차단되어 있는지(false)를 나타내는 부울 값의 배열입니다.

값을 설정 하는 경우는 DtsPipelineComponentAttribute.SupportsBackPressure 속성을 trueDtsPipelineComponentAttribute, 에 대 한 구현을 제공 해야는 IsInputReady 메서드.

데이터 흐름 엔진 호출의 IsInputReady 더 많은 데이터를 받기 위해 대기 중인 입력을 결정할 수 있습니다. 이 메서드의 구현에는 부울 값에는 구성 요소의 입력의 각 상태 설정 canProcess 배열입니다. 입력은 inputIDs 배열에서 해당 ID 값으로 식별됩니다. 에 대 한 입력의 값을 설정 하면 truecanProcess 배열, 데이터 흐름 엔진에서 구성 요소의 호출 ProcessInput 메서드 하 고 지정된 된 입력에 대 한 더 많은 데이터를 제공 합니다.

하나 이상의 입력 값의 반드시 추가 업스트림 데이터를 사용할 수 있지만 truecanProcess 배열 또는 처리가 중지 합니다.

과도 한 메모리 사용의 처리에 대 한 자세한 내용은 사용자 지정 데이터 흐름 구성 요소는 입력에서 균일 하지 않은 속도로 데이터를 생성 하는 경우 참조 개발 데이터 흐름 구성 요소에는 여러 입력합니다.

다음 예에서 IsInputReady 메서드의 구현은 다음 조건을 충족하는 경우 입력이 추가 데이터를 받기 위해 대기 중임을 나타냅니다.

  • 추가 업스트림 데이터를 입력에 사용할 수 있는 경우(!inputEOR)

  • 구성 요소에서 이미 받은 버퍼에 현재 입력에 대해 처리할 수 있는 데이터가 없는 경우(inputBuffers[inputIndex].CurrentRow() == null)

입력이 추가 데이터를 받기 위해 대기 중인 경우 데이터 흐름 구성 요소는 해당 입력에 해당하는 canProcess 배열의 요소 값을 true로 설정하여 이를 나타냅니다.

반면, 입력에 대해 처리할 수 있는 데이터가 구성 요소에 있는 경우 이 예는 입력 처리를 일시 중단합니다. 즉, 해당 입력에 해당하는 canProcess 배열의 요소 값을 false로 설정합니다.

public override void IsInputReady(int[] inputIDs, ref bool[] canProcess)
{
    for (int i = 0; i < inputIDs.Length; i++)
    {
        int inputIndex = ComponentMetaData.InputCollection.GetObjectIndexByID(inputIDs[i]);

        canProcess[i] = (inputBuffers[inputIndex].CurrentRow() == null)
            && !inputEOR[inputIndex];
    }
}

위의 예에서는 부울 inputEOR 배열을 사용하여 각 입력에 사용 가능한 추가 업스트림 데이터가 있는지 여부를 나타냅니다. 이 배열 이름에서 EOR은 "행 집합의 끝(end of rowset)"을 나타내며 데이터 흐름 버퍼의 EndOfRowset 속성을 참조합니다. 이 예에서 여기에 표시되지 않은 일부분인 ProcessInput 메서드는 받은 각 데이터 버퍼의 EndOfRowset 속성 값을 확인합니다. 값 true 입력에 사용할 수 있는 추가 업스트림 데이터가 없음이 없는 값과의 값을 설정 하는 예제 inputEORtrue 해당 입력 합니다. 이 구현에서 IsInputReady 해당 하는 값을 설정 하는 메서드는 canProcess 배열을 false 입력에 대 한 때의 값 inputEOR 입력에 대해 사용할 수 있는 추가 업스트림 데이터가 없음을 임을 나타냅니다.

맨 위로 이동
표시: