Compartir a través de


Método IRunnableObject::Run (objidl.h)

Fuerza la ejecución de un objeto.

Sintaxis

HRESULT Run(
  [in] LPBINDCTX pbc
);

Parámetros

[in] pbc

Puntero al contexto de enlace de la operación de ejecución. Consulte IBindCtx. Este parámetro puede ser NULL.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_INVALIDARG, E_UNEXPECTED y S_OK.

Comentarios

Los contenedores llaman a IRunnableObject::Run para forzar que sus objetos entren en estado de ejecución. Si el objeto aún no se está ejecutando, llamar a Run puede ser una operación costosa, en el orden de muchos segundos. Si el objeto ya se está ejecutando, este método no tiene ningún efecto en el objeto .

Notas a los autores de llamadas

Cuando se llama a en un objeto vinculado que se ha convertido en una nueva clase desde que se activó por última vez el vínculo, IRunnableObject::Run puede devolver OLE_E_CLASSDIFF. En este caso, el cliente debe llamar a IOleLink::BindToSource.

OleRun es una función auxiliar que vuelve a empaquetar convenientemente la funcionalidad que ofrece IRunnableObject::Run. Con la versión de OLE 2.01, se cambió la implementación de OleRun para que llame a QueryInterface, solicite IRunnableObject y, a continuación, llame a IRunnableObject::Run. En otras palabras, puede usar la interfaz y la función auxiliar indistintamente.

Notas para los implementadores

El objeto debe registrarse en la tabla de objetos en ejecución si tiene asignado un moniker. El objeto no debe contener ningún bloqueo fuerte en sí mismo; en su lugar, debe permanecer en estado inestable y desbloqueado. El objeto debe bloquearse cuando se realiza la primera conexión externa al objeto .

Un objeto incrustado debe contener un bloqueo en su contenedor de inserción mientras está en estado de ejecución. El controlador predeterminado proporcionado por OLE 2 se encarga de bloquear el contenedor de inserción en nombre de los objetos implementados por una aplicación de objeto EXE. Los objetos implementados por una aplicación de objetos DLL deben colocar explícitamente un bloqueo en sus contenedores de inserción, lo que hacen llamando primero a IOleClientSite::GetContainer para obtener un puntero al contenedor y, a continuación, llamar a IOleContainer::LockContainer para colocar realmente el bloqueo. Este bloqueo debe liberarse cuando se llama a IOleObject::Close .

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IRunnableObject

OleRun