PipelineComponent.GetDependentInputs(Int32) Methode

Definition

Gibt eine Sammlung der Eingabe-IDs von Eingaben zurück, die auf weitere Daten warten und somit die angegebene Eingabe blockieren.

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)

Parameter

blockedInputID
Int32

Die ID eines Eingangs, der blockiert wird, während andere Eingänge auf weitere Daten warten.

Gibt zurück

Eine Sammlung der Eingabe-IDs von Eingaben, die auf weitere Daten warten und somit die durch den Parameter blockedInputID identifizierte Eingabe blockieren.

Beispiele

Für eine bestimmte Eingabe, die blockiert ist, liefert die folgende Implementierung der GetDependentInputs Methode eine Sammlung der Eingaben zurück, die darauf warten, weitere Daten zu empfangen, und somit die angegebene Eingabe blockieren. Die Komponente identifiziert die blockierenden Eingaben, indem sie nach anderen Eingaben als der angegebenen Eingabe prüft, die derzeit keine Daten zur Verarbeitung in den Puffern haben, die die Komponente bereits erhalten hat (inputBuffers[i].CurrentRow() == null). Die Methode GetDependentInputs gibt dann die Sammlung blockierender Eingaben als Sammlung von Eingabe-IDs zurück.

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

Hinweise

Wenn Sie den Wert der Eigenschaft Microsoft.SqlServer.Dts.Pipeline.DtsPipelineComponentAttribute.SupportsBackPressure auf true in der DtsPipelineComponentAttributesetzen, und Ihre benutzerdefinierte Datenflusskomponente mehr als zwei Eingaben unterstützt, müssen Sie auch eine Implementierung für die Methode GetDependentInputs bereitstellen.

Die Datenfluss-Engine ruft die Methode GetDependentInputs nur auf, wenn der Benutzer mehr als zwei Eingaben an die Komponente anhängt. Wenn eine Komponente nur zwei Eingänge hat und die IsInputReady Methode anzeigt, dass eine Eingabe blockiert ist (canProcess = false), weiß die Datenfluss-Engine, dass die andere Eingabe darauf wartet, weitere Daten zu empfangen. Wenn jedoch mehr als zwei Eingänge vorhanden sind und die IsInputReady Methode anzeigt, dass ein Eingang blockiert ist, identifiziert der zusätzliche Code in der Methode GetDependentInputs die Eingaben, die darauf warten, mehr Daten zu empfangen.

Für weitere Informationen zum Umgang mit übermäßigem Speicherverbrauch, wenn die Eingaben einer benutzerdefinierten Datenfluss-Komponente Daten mit ungleichmäßigen Raten erzeugen, siehe Entwicklung von Datenfluss Components with Multiple Inputs.

Gilt für: