IRunnableObject::Run
Runs
an object.
HRESULT Run(
LPBC lpbc |
//Pointer to
binding context |
); |
|
Parameter
lpbc
[in] Pointer
to the binding context of the run operation. May be NULL.
Return Values
This method
supports the standard return values E_OUTOFMEMORY and E_UNEXPECTED, as well as
the following:
S_OK
The object
was successfully placed in the running state.
Remarks
Containers
call IRunnableObject::Run to force their objects to enter the running
state. If the object is not already running, calling IRunnableObject::Run
can be an expensive operation, on the order of many seconds. If the object is
already running, then this method has no effect on the object.
Notes to Callers
When called
on a linked object that has been converted to a new class since the link was
last activated, IRunnableObject::Run may return OLE_E_CLASSDIFF. In this
case, the client should call IOleLink::BindToSource.
OleRun is a helper
function that conveniently repackages the functionality offered by IRunnableObject::Run.
With the release of OLE 2.01, the implementation of OleRun was changed
so that it calls QueryInterface, asks for IRunnableObject
Notes to Implementers
The object
should register in the running object table if it has a moniker assigned. The
object should not hold any strong locks on itself; instead, it should remain in
the unstable, unlocked state. The object should be locked when the first
external connection is made to the object.
An embedded
object must hold a lock on its embedding container while it is in the running state.
The Default handler provided by OLE 2 takes care of locking the embedding
container on behalf of objects implemented by an EXE object application.
Objects implemented by a DLL object application must explicitly put a lock on
their embedding containers, which they do by first calling IOleClientSite::Getcontainer
to get a pointer to the container, then calling IOleContainer::LockContainer
to actually place the lock. This lock must be released when IOleObject::Close
is called.
See Also