Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
_VSRDTFLAGS. RDT_ReadLock est un indicateur qui fournit une logique pour verrouiller un document dans la table de documents en cours d’exécution (RDT), qui est la liste de tous les documents actuellement ouverts dans l’IDE Visual Studio. Cet indicateur détermine quand des documents sont ouverts et si un document est visible dans l’interface utilisateur ou conservé de manière invisible en mémoire.
En règle générale, vous utilisez _VSRDTFLAGS. RDT_ReadLock quand l’une des valeurs suivantes est vraie :
Vous souhaitez ouvrir un document de manière invisible et en lecture seule, mais il n’est pas encore établi qui IVsHierarchy doit le posséder.
Vous souhaitez que l’utilisateur soit invité à enregistrer un document qui a été ouvert de manière invisible avant que l’utilisateur l’ait affiché dans l’interface utilisateur, puis tenté de le fermer.
Comment gérer les documents visibles et invisibles
Lorsqu’un utilisateur ouvre un document dans l’interface utilisateur, un IVsHierarchy propriétaire du document doit être établi et un _VSRDTFLAGS. RDT_EditLock indicateur doit être défini. Si aucun propriétaire ne peut être établi, le document ne IVsHierarchy sera pas enregistré lorsque l’utilisateur clique sur Enregistrer tout ou ferme l’IDE. Cela signifie que si un document est ouvert de manière invisible où il est modifié en mémoire, et que l’utilisateur est invité à enregistrer le document lors de l’arrêt ou enregistré si l’option Enregistrer tout est choisie, une RDT_ReadLock opération ne peut pas être utilisée. Au lieu de cela, vous devez utiliser un RDT_EditLock __VSREGDOCLOCKHOLDER et l’inscrire IVsDocumentLockHolder. RDLH_WeakLockHolder indicateur.
RDT_EditLock et modification de document
L’indicateur précédent mentionné indique que l’ouverture invisible du document génère ses résultats RDT_EditLock lorsque le document est ouvert par l’utilisateur dans un DocumentWindow visible. Lorsque cela se produit, l’utilisateur reçoit une invite d’enregistrement lorsque documentWindow visible est fermé.
Microsoft.VisualStudio.Package.Automation.OAProject.CodeModel les implémentations qui utilisent le IVsInvisibleEditorManager service fonctionnent initialement lorsqu’une RDT_ReadLock seule opération est prise (c’est-à-dire lorsque le document est ouvert de manière invisible pour analyser les informations). Plus tard, si le document doit être modifié, le verrou est mis à niveau vers une RDT_EditLock faible. Si l’utilisateur ouvre ensuite le document dans un DocumentWindow visible, la CodeModelvaleur faible RDT_EditLock est libérée.
Si l’utilisateur ferme ensuite DocumentWindow et choisit Non lorsqu’il est invité à enregistrer le document ouvert, l’implémentation CodeModel supprime toutes les informations du document et rouvert le document à partir du disque de manière invisible la prochaine fois que d’autres informations sont requises pour le document. La subtilité de ce comportement est une instance où l’utilisateur ouvre DocumentWindow du document ouvert invisible, le modifie, le ferme, puis choisit Non quand il est invité à enregistrer le document. Dans ce cas, si le document a un RDT_ReadLockdocument, le document ne sera pas réellement fermé et le document modifié restera ouvert de manière invisible en mémoire, même si l’utilisateur a choisi de ne pas enregistrer le document.
Si l’ouverture invisible du document utilise une valeur faible RDT_EditLock, elle génère son verrou lorsque l’utilisateur ouvre le document de manière visible et qu’aucun autre verrou n’est conservé. Lorsque l’utilisateur ferme DocumentWindow et choisit Non lorsque vous y êtes invité à enregistrer le document, le document doit être fermé à partir de la mémoire. Cela signifie que le client invisible doit écouter les événements RDT pour suivre cette occurrence. La prochaine fois que le document est requis, le document doit être rouvert.