Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
_VSRDTFLAGS. RDT_ReadLock es una marca que proporciona lógica para bloquear un documento en la tabla de documentos en ejecución (RDT), que es la lista de todos los documentos que están abiertos actualmente en el IDE de Visual Studio. Esta marca determina cuándo se abren documentos y si un documento está visible en la interfaz de usuario o se mantiene visible de forma invisible en la memoria.
Por lo general, se usa _VSRDTFLAGS. RDT_ReadLock cuando se cumple una de las siguientes condiciones:
Desea abrir un documento de formavisible y de solo lectura, pero aún no se ha establecido el que IVsHierarchy debe poseerlo.
Desea que se le pida al usuario que guarde un documento que se abrió de forma invisible antes de que el usuario lo mostrara en la interfaz de usuario y, a continuación, intentara cerrarlo.
Cómo administrar documentos visibles e invisibles
Cuando un usuario abre un documento en la interfaz de usuario, se debe establecer un IVsHierarchy propietario del documento y un _VSRDTFLAGS. RDT_EditLock marca debe establecerse. Si no se puede establecer ningún IVsHierarchy propietario, el documento no se guardará cuando el usuario haga clic en Guardar todo o cierre el IDE. Esto significa que si un documento está abierto invisiblemente donde se modifica en la memoria y se pide al usuario que guarde el documento al apagar o guardar si se elige Guardar todo , RDT_ReadLock no se puede usar . En su lugar, debe usar y RDT_EditLock registrar un IVsDocumentLockHolder objeto cuando un __VSREGDOCLOCKHOLDER. RDLH_WeakLockHolder marca.
RDT_EditLock y modificación de documentos
La marca anterior mencionada indica que la apertura invisible del documento dará lugar RDT_EditLock cuando el usuario abra el documento en un DocumentWindow visible. Cuando esto ocurre, se presenta al usuario una solicitud Save cuando se cierra el documento visibleWindow .
Microsoft.VisualStudio.Package.Automation.OAProject.CodeModel las implementaciones que usan el IVsInvisibleEditorManager servicio funcionan inicialmente cuando solo se toma una RDT_ReadLock (es decir, cuando el documento se abre de forma invisible para analizar la información). Más adelante, si se debe modificar el documento, el bloqueo se actualiza a un RDT_EditLock débil. Si el usuario abre el documento en un documentWindow visible, se libera el CodeModelelemento débil RDT_EditLock .
Si el usuario cierra documentWindow y elige No cuando se le pida que guarde el documento abierto, la CodeModel implementación elimina toda la información del documento y vuelve a abrir el documento desde el disco de forma visible la próxima vez que se requiera más información para el documento. La sutileza de este comportamiento es una instancia en la que el usuario abre documentWindow del documento abierto invisible, lo modifica, lo cierra y, a continuación, elige No cuando se le pida que guarde el documento. En este caso, si el documento tiene un RDT_ReadLock, el documento no se cerrará realmente y el documento modificado permanecerá abierto de forma invisible en la memoria, aunque el usuario eligió no guardar el documento.
Si la apertura invisible del documento usa un valor débil RDT_EditLock, produce su bloqueo cuando el usuario abre el documento visiblemente y no se mantiene ningún otro bloqueo. Cuando el usuario cierra documentWindow y elige No cuando se le pida que guarde el documento, el documento debe cerrarse desde la memoria. Esto significa que el cliente invisible debe escuchar eventos RDT para realizar un seguimiento de esta aparición. La próxima vez que se requiera el documento, se debe volver a abrir el documento.