Partilhar via


PipelineComponent.GetDependentInputs(Int32) Método

Definição

Retorna uma coleção das IDs das entradas que estão aguardando mais dados e, dessa forma, estão bloqueando a entrada especificada.

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)

Parâmetros

blockedInputID
Int32

A ID de uma entrada que é bloqueada enquanto outras entradas estão aguardando mais dados.

Retornos

Uma coleção das IDs de entradas que estão aguardando mais dados e, dessa forma, estão bloqueando a entrada identificada pelo parâmetro blockedInputID.

Exemplos

Para uma entrada específica bloqueada, a implementação a GetDependentInputs seguir do método retorna uma coleção de entradas que estão aguardando para receber mais dados e, portanto, estão bloqueando a entrada especificada. O componente identifica as entradas de bloqueio verificando entradas diferentes da entrada especificada que atualmente não têm dados disponíveis para processar nos buffers que o componente já recebeu (inputBuffers[i].CurrentRow() == null). Em seguida, o método GetDependentInputs retorna a coleção de entradas com bloqueio como uma coleção de IDs de entrada.

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;  
}  

Comentários

Quando você define o valor da Microsoft.SqlServer.Dts.Pipeline.DtsPipelineComponentAttribute.SupportsBackPressure propriedade como true , e seu DtsPipelineComponentAttributecomponente de fluxo de dados personalizado dá suporte a mais de duas entradas, você também deve fornecer uma implementação para o GetDependentInputs método.

O mecanismo de fluxo de dados chamará o método GetDependentInputs apenas quando o usuário anexar mais de duas entradas ao componente. Quando um componente tem apenas duas entradas e o IsInputReady método indica que uma entrada está bloqueada (canProcess = false), o mecanismo de fluxo de dados sabe que a outra entrada está esperando para receber mais dados. No entanto, quando há mais de duas entradas e o IsInputReady método indica que uma entrada está bloqueada, o código extra no GetDependentInputs método identifica as entradas que estão esperando para receber mais dados.

Para obter mais informações sobre o tratamento do uso excessivo de memória se as entradas de um componente de fluxo de dados personalizado produzirem dados em taxas desiguais, consulte Desenvolver componentes Fluxo de Dados com várias entradas.

Aplica-se a