Поделиться через


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

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

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

Коллекция идентификаторов потоков входа, которые ожидают дополнительные данные и поэтому блокируют поток входа, заданный параметром 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;  
}  

Комментарии

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

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

Дополнительные сведения об обработке чрезмерного использования памяти, если входные данные пользовательского компонента потока данных создают данные с неравномерной скоростью, см. в разделе "Разработка компонентов Поток данных с несколькими входными данными".

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