Actualización de la interfaz de usuarioUpdating the User Interface

Después de implementar un comando, puede agregar código para actualizar la interfaz de usuario con el estado de los comandos de nuevo.After you implement a command, you can add code to update the user interface with the state of your new commands.

En una aplicación típica de Win32, el conjunto de comandos que se puede sondear continuamente y se puede ajustar el estado de comandos individuales tal y como el usuario ve ellos.In a typical Win32 application, the command set can be continuously polled and the state of individual commands can be adjusted as the user views them. Sin embargo, dado que el Programa para la mejoraVisual Studio shell puede hospedar un número ilimitado de VSPackages, una amplia sondeo puede reducir la capacidad de respuesta, especialmente de sondeo en los ensamblados de interoperabilidad entre código administrado y COM.However, because the Programa para la mejoraVisual Studio shell can host an unlimited number of VSPackages, extensive polling might decrease responsiveness, especially polling across interop assemblies between managed code and COM.

Para actualizar la interfaz de usuarioTo update the UI

  1. Realice uno de estos pasos:Perform one of the following steps:

    • Llame al método UpdateCommandUI.Call the UpdateCommandUI method.

      Un IVsUIShell interfaz puede obtenerse de la SVsUIShell de servicio, como se indica a continuación.An IVsUIShell interface can be obtained from the SVsUIShell service, as follows.

      void UpdateUI(Microsoft.VisualStudio.Shell.ServiceProvider sp)  
      {  
          IVsUIShell vsShell = (IVsUIShell)sp.GetService(typeof(IVsUIShell));  
          if (vsShell != null)  
          {  
              int hr = vsShell.UpdateCommandUI(0);  
              Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(hr);  
          }  
      }  
      
      

      Si el parámetro de la UpdateCommandUI es distinto de cero (TRUE), se llevará a cabo la actualización de forma sincrónica e inmediatamente.If the parameter of the UpdateCommandUI is non-zero (TRUE), then the update is performed synchronously and immediately. Se recomienda pasar cero (FALSE) para este parámetro ayudar a mantener un buen rendimiento.We recommend that you pass zero (FALSE) for this parameter to help maintain good performance. Si desea evitar el almacenamiento en caché, se aplican los DontCache marca cuando se crea el comando en el archivo .vsct.If you want to avoid caching, apply the DontCache flag when you create the command in the .vsct file. No obstante, use la marca con precaución o puede reducir el rendimiento.Nevertheless, use the flag cautiously or performance might decrease. Para obtener más información acerca de las marcas de comando, consulte el comando marca elemento documentación.For more information about command flags, see the Command Flag Element documentation.

    • En los paquetes VSPackage que hospedar un control ActiveX mediante el modelo de activación en contexto en una ventana, puede que sea más conveniente utilizar el UpdateUI método.In VSPackages that host an ActiveX control by using the in-place activation model in a window, it might be more convenient to use the UpdateUI method. El UpdateCommandUI método en el IVsUIShell interfaz y la UpdateUI método en el IOleInPlaceComponentUIManager interfaz son funcionalmente equivalentes.The UpdateCommandUI method in the IVsUIShell interface and the UpdateUI method in the IOleInPlaceComponentUIManager interface are functionally equivalent. Ambas hacen que el entorno volver a consultar el estado de todos los comandos.Both cause the environment to re-query the state of all commands. Por lo general, una actualización no se realiza de forma inmediata.Typically, an update is not performed immediately. En su lugar, una actualización se retrasa hasta el tiempo de inactividad.Instead, an update is delayed until idle time. El shell se almacena en memoria caché el estado del comando para ayudar a mantener un buen rendimiento.The shell caches the command state to help maintain good performance. Si desea evitar el almacenamiento en caché, se aplican los DontCache marca cuando se crea el comando en el archivo .vsct.If you want to avoid caching, apply the DontCache flag when you create the command in the .vsct file. No obstante, use la marca con precaución porque podría reducir el rendimiento.Nevertheless, use the flag cautiously because performance might decrease.

      Tenga en cuenta que puede obtener la IOleInPlaceComponentUIManager interfaz mediante una llamada a la QueryInterface método en un IOleComponentUIManager objeto u obtenido mediante la interfaz de la SOleComponentUIManager servicio.Notice that you can obtain the IOleInPlaceComponentUIManager interface by calling the QueryInterface method on an IOleComponentUIManager object or by obtaining the interface from the SOleComponentUIManager service.

Vea tambiénSee Also

¿Cómo VSPackages agregar elementos de la interfaz de usuario How VSPackages Add User Interface Elements
ImplementaciónImplementation