Metodo IRunnableObject::Run (objidl.h)
Forza l'esecuzione di un oggetto.
Sintassi
HRESULT Run(
[in] LPBINDCTX pbc
);
Parametri
[in] pbc
Puntatore al contesto di associazione dell'operazione di esecuzione. Vedere IBindCtx. Questo parametro può essere NULL.
Valore restituito
Questo metodo può restituire i valori restituiti standard E_INVALIDARG, E_UNEXPECTED e S_OK.
Commenti
I contenitori chiamano IRunnableObject::Run per forzare l'immissione dello stato in esecuzione degli oggetti. Se l'oggetto non è già in esecuzione, la chiamata a Run può essere un'operazione costosa, nell'ordine di molti secondi. Se l'oggetto è già in esecuzione, questo metodo non ha alcun effetto sull'oggetto.
Note ai chiamanti
Quando viene chiamato su un oggetto collegato convertito in una nuova classe dopo l'ultima attivazione del collegamento, IRunnableObject::Run può restituire OLE_E_CLASSDIFF. In questo caso, il client deve chiamare IOleLink::BindToSource.OleRun è una funzione helper che riconfeziona in modo pratico le funzionalità offerte da IRunnableObject::Run. Con la versione di OLE 2.01, l'implementazione di OleRun è stata modificata in modo che chiami QueryInterface, chiede IRunnableObject e quindi chiama IRunnableObject::Run. In altre parole, è possibile usare l'interfaccia e la funzione helper in modo intercambiabile.
Note per gli implementatori
L'oggetto deve essere registrato nella tabella oggetto in esecuzione se ha un moniker assegnato. L'oggetto non deve contenere blocchi forti su se stessi; dovrebbe invece rimanere nello stato instabile, sbloccato. L'oggetto deve essere bloccato quando viene eseguita la prima connessione esterna all'oggetto.Un oggetto incorporato deve contenere un blocco sul contenitore di incorporamento mentre si trova nello stato in esecuzione. Il gestore predefinito fornito da OLE 2 si occupa del blocco del contenitore di incorporamento per conto degli oggetti implementati da un'applicazione oggetto EXE. Gli oggetti implementati da un'applicazione dell'oggetto DLL devono inserire in modo esplicito un blocco nei contenitori di incorporamento, che devono prima chiamare IOleClientSite::GetContainer per ottenere un puntatore al contenitore, quindi chiamare IOleContainer::LockContainer per posizionare effettivamente il blocco. Questo blocco deve essere rilasciato quando viene chiamato IOleObject::Close .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | objidl.h |