Язык

PipelineComponent.GetDependentInputs(Int32) Метод

Определение

Возвращает набор входных идентификаторов входов, которые ожидают дополнительных данных и, следовательно, блокируют указанный вход.

public:
 virtual System::Collections::ObjectModel::Collection<int> ^ GetDependentInputs(int blockedInputID);
public virtual System.Collections.ObjectModel.Collection<int> GetDependentInputs(int blockedInputID);
abstract member GetDependentInputs : int -> System.Collections.ObjectModel.Collection<int>
override this.GetDependentInputs : int -> System.Collections.ObjectModel.Collection<int>
Public Overridable Function GetDependentInputs (blockedInputID As Integer) As Collection(Of Integer)

Параметры

blockedInputID
Int32

ID входа, который блокируется, пока другие входы ждут дополнительных данных.

Возвращаемое значение

Коллекция входных идентификаторов входов, которые ждут дополнительных данных и, следовательно, блокируют вход, идентифицированный параметром blockedInputID .

Примеры

Для конкретного блокируемого входа следующая реализация GetDependentInputs метода возвращает набор входов, которые ожидают получения дополнительных данных и, следовательно, блокируют указанный вход. Компонент идентифицирует блокирующие входы, проверяя входы, отличные от указанного входа, которые в настоящее время не имеют данных для обработки в буферах, которые компонент уже получил (inputBuffers[i].CurrentRow() == null). GetDependentInputs Затем метод возвращает набор блокирующих входов в виде коллекции входных идентификаторов.

public override Collection<int> GetDependentInputs(int blockedInputID)  
{  
    Collection<int> currentDependencies = new Collection<int>();  
    for (int i = 0; i < ComponentMetaData.InputCollection.Count; i++)  
    {  
        if (ComponentMetaData.InputCollection[i].ID != blockedInputID  
            && inputBuffers[i].CurrentRow() == null)  
        {  
            currentDependencies.Add(ComponentMetaData.InputCollection[i].ID);  
        }  
    }  

    return currentDependencies;  
}  

Комментарии

Когда вы устанавливаете значение Microsoft.SqlServer.Dts.Pipeline.DtsPipelineComponentAttribute.SupportsBackPressure свойства в trueDtsPipelineComponentAttribute, и ваш пользовательский компонент потока данных поддерживает более двух входов, тогда необходимо также предоставить реализацию для этого GetDependentInputs метода.

Движок потока данных вызывает метод GetDependentInputs только тогда, когда пользователь присоединяет к компоненту более двух входов. Когда у компонента всего два входа, и IsInputReady метод показывает, что один вход заблокирован (canProcess = false), движок потока данных знает, что другой вход ждёт получения дополнительных данных. Однако, когда входов более двух и IsInputReady метод указывает, что один вход заблокирован, дополнительный код GetDependentInputs в методе определяет входы, ожидающие получения дополнительных данных.

Для получения дополнительной информации о работе с чрезмерным использованием памяти, если входные данные пользовательского компонента data flow производят данные с неравномерной скоростью, см. раздел Developing Поток данных Components with Multiple Inputs.

Применяется к