Erstellen von warteschlangenfähigen Komponenten
Eine Komponente mit mindestens einer warteschlangenfähigen Schnittstelle ist eine warteschlangenfähige Komponente. Damit eine Komponente von einer Warteschlange aufgerufen werden kann, müssen die Schnittstellen als warteschlangenfähig gekennzeichnet sein, zudem muss die Komponente in einer in die Warteschlange gestellte Anwendung installiert sein. Eine warteschlangenfähige Komponente kann jedoch eine Komponente einer Anwendung sein, die nicht in die Warteschlange gestellt ist.
Eine warteschlangenfähige Schnittstelle darf nur Eingangsparameter enthalten – keine Ausgangsparameter und keine Rückgabewerte. Diese Eigenschaften werden überprüft, indem die Typinformationen bei der Installation der Komponente analysiert werden. Wenn die Schnittstelle nicht warteschlangenfähig ist, kann die Warteschlange der Anwendung, die die Komponente enthält, nicht aktiviert werden.
Gehen Sie wie folgt vor, um eine COM+-Schnittstelle als warteschlangenfähig anzugeben:
Öffnen Sie in der Konsolenstruktur des Verwaltungstools für Komponentendienste unter Komponentendienste den Ordner COM+-Anwendungen, der dem zu verwaltenden Computer zugeordnet ist.
Öffnen Sie den Ordner Schnittstellen der Komponente der COM+-Anwendung, die Sie warteschlangenfähig machen möchten.
Klicken Sie mit der rechten Maustaste auf die Schnittstelle, die Sie als warteschlangenfähig kennzeichnen möchten, und klicken Sie anschließend auf Eigenschaften.
Wählen Sie im Dialogfeld „Eigenschaften“ die Registerkarte Warteschlangen aus.
Aktivieren Sie das Kontrollkästchen mit der Bezeichnung In der Warteschlange.
Hinweis
Wenn das Kontrollkästchen In der Warteschlange ausgegraut ist, erfüllt die Schnittstelle die oben beschriebenen Anforderungen zur Warteschlangenfähigkeit nicht.
Klicken Sie auf OK.
Eine warteschlangenfähige Komponente kann als solche gekennzeichnet werden, indem Sie für alle warteschlangenfähigen Schnittstellen das Attributmakro QUEUEABLE dem Abschnitt „Schnittstelle“ der IDL-Quelldatei (Interface Definition Language) hinzufügen.
#include "mtxattr.h" [ object, dual, uuid(), helpstring(IShiphip"), QUEUEABLE ] interface IShip:IDispatch{ [propput, id(1)] HRESULT CustomerId ([in] long CustId); [propput, id(2)] HRESULT OrderId ([in] long OrderID); [id(3)] HRESULT LineItem ([in] long Qty); [id(4)] HRESULT Process (); }
Zugehörige Themen