IRunnableObject::Run-Methode (objidl.h)

Erzwingt die Ausführung eines Objekts.

Syntax

HRESULT Run(
  [in] LPBINDCTX pbc
);

Parameter

[in] pbc

Ein Zeiger auf den Bindungskontext des Ausführungsvorgangs. Siehe IBindCtx. Dieser Parameter kann NULL sein.

Rückgabewert

Diese Methode kann die Standardrückgabewerte E_INVALIDARG, E_UNEXPECTED und S_OK zurückgeben.

Hinweise

Container rufen IRunnableObject::Run auf, um zu erzwingen, dass ihre Objekte in den Ausführungszustand wechseln. Wenn das Objekt noch nicht ausgeführt wird, kann der Aufruf von Run in der Reihenfolge von vielen Sekunden ein teurer Vorgang sein. Wenn das Objekt bereits ausgeführt wird, hat diese Methode keine Auswirkungen auf das Objekt.

Hinweise für Anrufer

Beim Aufruf für ein verknüpftes Objekt, das seit der letzten Aktivierung des Links in eine neue Klasse konvertiert wurde, gibt IRunnableObject::Run möglicherweise OLE_E_CLASSDIFF zurück. In diesem Fall sollte der Client IOleLink::BindToSource aufrufen.

OleRun ist eine Hilfsfunktion, die die von IRunnableObject::Run angebotene Funktionalität bequem neu packt. Mit der Veröffentlichung von OLE 2.01 wurde die Implementierung von OleRun so geändert, dass QueryInterface aufgerufen, nach IRunnableObject gefragt und dann IRunnableObject::Run aufgerufen wird. Anders ausgedrückt: Sie können die Schnittstelle und die Hilfsfunktion austauschbar verwenden.

Hinweise für Implementierer

Das Objekt sollte in der ausgeführten Objekttabelle registriert werden, wenn ihm ein Moniker zugewiesen ist. Das Objekt sollte keine starken Sperren für sich selbst enthalten; stattdessen sollte es im instabilen, entsperrten Zustand bleiben. Das Objekt sollte gesperrt werden, wenn die erste externe Verbindung mit dem Objekt hergestellt wird.

Ein eingebettetes Objekt muss eine Sperre für seinen Einbettungscontainer enthalten, während es sich im ausgeführten Zustand befindet. Der von OLE 2 bereitgestellte Standardhandler kümmert sich um das Sperren des Einbettungscontainers im Namen von Objekten, die von einer EXE-Objektanwendung implementiert werden. Objekte, die von einer DLL-Objektanwendung implementiert werden, müssen explizit eine Sperre für ihre Einbettungscontainer festlegen, was sie tun, indem sie zuerst IOleClientSite::GetContainer aufrufen, um einen Zeiger auf den Container abzurufen, und dann IOleContainer::LockContainer aufrufen, um die Sperre tatsächlich zu platzieren. Diese Sperre muss aufgehoben werden, wenn IOleObject::Close aufgerufen wird.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile objidl.h

Weitere Informationen

IRunnableObject

OleRun