Table de Document en cours d’exécutionRunning Document Table

L’IDE gère la liste de tous les documents actuellement ouverts dans une structure interne appelée table de document en cours d’exécution (r & DT).The IDE maintains the list of all currently open documents in an internal structure called the running document table (RDT). Cette liste inclut tous les documents ouverts dans la mémoire, indépendamment de si ces documents sont actuellement en cours de modification.This list includes all open documents in memory, regardless of whether these documents are currently being edited. Un document est n’importe quel élément est rendu persistant, y compris les fichiers dans un projet ou le fichier projet principal (par exemple, un fichier .vcxproj).A document is any item that is persisted, including files in a project or the main project file (for example, a .vcxproj file).

Éléments de la Table de Document en cours d’exécutionElements of the Running Document Table

La table de document en cours d’exécution contient les entrées suivantes.The running document table contains the following entries.

ÉlémentElement DescriptionDescription
Moniker de documentDocument moniker Chaîne qui identifie de façon unique l’objet de données du document.A string that uniquely identifies the document data object. Cela peut être le chemin d’accès absolu pour un système de projet qui gère les fichiers (par exemple, C:\MyProject\MyFile).This would be the absolute file path for a project system that manages files (for example, C:\MyProject\MyFile). Cette chaîne est également utilisée pour les projets enregistrés dans les magasins de systèmes de fichiers, tels que des procédures stockées dans une base de données.This string is also used for projects saved in stores other than file systems, such as stored procedures in a database. Dans ce cas, le système de projet d’inventer une chaîne unique qu’elle peut reconnaître et éventuellement analyser pour déterminer comment stocker le document.In this case, the project system can invent a unique string that it can recognize and possibly parse to determine how to store the document.
Propriétaire de la hiérarchieHierarchy owner L’objet de hiérarchie qui possède le document, comme représenté par un IVsHierarchy interface.The hierarchy object that owns the document, as represented by an IVsHierarchy interface.
ID d’élémentItem ID Identificateur d’élément pour un élément spécifique dans la hiérarchie.Item identifier for a specific item within the hierarchy. Cette valeur est unique parmi tous les documents dans la hiérarchie auquel appartient ce document, mais cette valeur n’est pas garantie pour être unique au sein des hiérarchies différentes.This value is unique among all documents in the hierarchy that owns this document but this value is not guaranteed to be unique across different hierarchies.
Objet de données de documentDocument data object Au minimum, il s’agit d’un IUnknownAt the minimum, this is an IUnknown

.object. L’IDE ne nécessite pas de n’importe quelle interface particulier au-delà de la IUnknown interface pour l’objet de données de document d’un éditeur personnalisé.The IDE does not require any particular interface beyond the IUnknown interface for a custom editor's document data object. Toutefois, pour un éditeur standard, mise en œuvre de l’éditeur de le IVsPersistDocData2 interface est requise pour traiter des appels de persistance de fichier à partir du projet.However, for a standard editor, the editor's implementation of the IVsPersistDocData2 interface is required to handle file persistence calls from the project. Pour plus d’informations, consultez enregistrer un Document Standard.For more information, see Saving a Standard Document.
IndicateursFlags Indicateurs qui contrôlent si le document est enregistré, si un verrou de lecture ou de modification est appliqué et ainsi de suite, peuvent être spécifiés lorsque les entrées sont ajoutées à la r & DT.Flags that control whether the document is saved, whether a read or edit lock is applied, and so on, can be specified when entries are added to the RDT. Pour plus d’informations, consultez l’énumération _VSRDTFLAGS.For more information, see the _VSRDTFLAGS enumeration.
Modifier le nombre de verrousEdit Lock Count Nombre de verrous de modification.Count of edit locks. Un verrou de modification indique que certains éditeur a le document ouvrent pour être modifiées.An edit lock indicates that some editor has the document open for editing. Lorsque le nombre de verrous de modification passe à zéro, l’utilisateur est invité à enregistrer le document, s’il a été modifié.When the count of edit locks transitions to zero, the user is prompted to save the document, if it has been modified. Par exemple, chaque fois que vous ouvrez un document dans un éditeur à l’aide de la nouvelle fenêtre de commande, un verrou de modification est ajouté pour ce document dans la r & DT.For example, every time you open a document in an editor using the New Window command, an edit lock is added for that document in the RDT. Dans l’ordre pour un verrou de modification à définir, le document doit avoir une hiérarchie ou ID d’élémentIn order for an edit lock to be set, the document must have a hierarchy or item ID.
Nombre de verrous de lectureRead Lock Count Nombre de verrous de lecture.Count of read locks. Un verrou de lecture indique que le document en cours est en lecture via un mécanisme par exemple un Assistant.A read lock indicates that the document is being read through some mechanism such as a wizard. Un verrou de lecture conserve un document actif dans la r & DT en indiquant que le document ne peut pas être modifié.A read lock holds a document alive in the RDT while indicating that the document cannot be edited. Vous pouvez définir un verrou de lecture même si le document ne pas avoir une hiérarchie ou ID d’élémentYou can set a read lock even if the document does not have a hierarchy or item ID. Cette fonctionnalité vous permet d’ouvrir un document en mémoire et entrez dans la r & DT sans le document en cours appartenant à une hiérarchie.This feature allows you to open a document in memory and enter it in the RDT without the document being owned by any hierarchy. Cette fonctionnalité est rarement utilisée.This feature is rarely used.
Détenteur de verrouLock holder Une instance d’un IVsDocumentLockHolder interface.An instance of an IVsDocumentLockHolder interface. Le détenteur du verrou est implémenté par les fonctionnalités telles que des Assistants qui ouvrent et modifier des documents en dehors d’un éditeur.The lock holder is implemented by features such as wizards that open and edit documents outside of an editor. Un détenteur de verrou permet à la fonctionnalité Ajouter un verrou de modification du document à empêcher que le document fermé tandis qu’il est toujours en cours de modification.A lock holder allows the feature to add an edit lock to the document to prevent the document from being closed while it is still being edited. Normalement, modifier les verrous sont uniquement ajoutées par les fenêtres de document (autrement dit, les éditeurs).Normally, edit locks are only added by document windows (that is, editors).

Chaque entrée dans la r & DT a une hiérarchie unique ou un ID d’élément associé, qui correspond généralement à un seul nœud dans le projet.Each entry in the RDT has a unique hierarchy or item ID associated with it, which generally corresponds to one node in the project. Tous les documents disponibles pour la modification appartiennent généralement à une hiérarchie.All documents available for editing are typically owned by a hierarchy. Les entrées effectuées dans la r & DT contrôlent quel projet, ou, plus précisément, quelle hiérarchie, actuellement propriétaire de l’objet de données de document en cours de modification.Entries made in the RDT control which project, or—more accurately—which hierarchy, currently owns the document data object being edited. En utilisant les informations dans la r & DT, l’IDE peut empêcher un document qui est ouvert en plusieurs projets à la fois.Using the information in the RDT, the IDE can prevent a document from being opened by more than one project at a time.

La hiérarchie de contrôle de la persistance des données et utilise les informations dans la r & DT pour mettre à jour le enregistrer et Enregistrer sous boîtes de dialogue.The hierarchy also controls the persistence of data and uses the information in the RDT to update the Save and Save As dialog boxes. Lorsque les utilisateurs de modifier un document, puis le quitter commande à partir de la fichier menu, l’IDE les invite au enregistrer les modifications boîte de dialogue pour afficher tous les projets et les éléments de projet qui sont actuellement modifiés.When users modify a document and then choose the Exit command from the File menu, the IDE prompts them with the Save Changes dialog box to show them all of the projects and project items that are currently modified. Cela permet aux utilisateurs de choisir parmi les documents à enregistrer.This allows users to choose which of the documents to save. La liste des documents à enregistrer (autrement dit, les documents qui ont des modifications) est généré à partir de la r & DT.The list of documents to save (that is, those documents that have changes) is generated from the RDT. Tous les éléments que vous attendez à voir dans le enregistrer les modifications boîte de dialogue en quittant l’application doit avoir des enregistrements dans la r & DT.Any items that you expect to see in the Save Changes dialog box upon exiting the application should have records in the RDT. La r & DT coordonne les documents sont enregistrés et si l’utilisateur est invité à propos d’un enregistrement opération en utilisant les valeurs spécifiées dans l’entrée d’indicateurs pour chaque document.The RDT coordinates which documents are saved and whether the user is prompted about a save operation using the values specified in the Flags entry for each document. Pour plus d’informations sur les indicateurs de r & DT, consultez le _VSRDTFLAGS énumération.For more information on the RDT flags, see the _VSRDTFLAGS enumeration.

Les verrous de modification et de lectureEdit Locks and Read Locks

Les verrous de modification et de lecture se trouvent dans la r & DT.Edit locks and read locks reside in the RDT. Les incréments de fenêtre de document et décrémente la modification de verrouillage.The document window increments and decrements the edit lock. Par conséquent, lorsqu’un utilisateur ouvre une nouvelle fenêtre de document, le modifier nombre de verrous par incréments d’une unité.Thus, when a user opens a new document window, the edit lock count increments by one. Lorsque le nombre de verrous de modification atteint zéro, la hiérarchie est signalée pour la rendre persistante ou enregistrer les données pour le document associé.When the number of edit locks reaches zero, the hierarchy is signaled to persist or save the data for the associated document. La hiérarchie peut puis conserve les données de quelque façon, y compris la persistance sous forme de fichier ou un élément dans un référentiel.The hierarchy can then persist the data in any way, including persisting as a file or as an item in a repository. Vous pouvez utiliser la LockDocument méthode dans le IVsRunningDocumentTable interface pour ajouter des verrous de modification et de lire des verrous et le UnlockDocument méthode pour supprimer ces verrous.You can use the LockDocument method in the IVsRunningDocumentTable interface to add edit locks and read locks, and the UnlockDocument method to remove these locks.

En règle générale, lorsque la fenêtre de document pour un éditeur est instanciée, le frame de fenêtre ajoute automatiquement un verrou de modification pour le document dans la r & DT.Normally, when the document window for an editor is instantiated, the window frame automatically adds an edit lock for the document in the RDT. Toutefois, si vous créez une vue personnalisée d’un document qui n’utilise pas une fenêtre de document standard (autrement dit, il n’implémente pas le IVsWindowFrame interface), vous devez définir votre propre verrou de modification.However, if you create a custom view of a document that does not use a standard document window (that is, it does not implement the IVsWindowFrame interface), then you need to set your own edit lock. Par exemple, dans un Assistant, un document est modifié sans être ouvert dans un éditeur.For example, in a wizard, a document is edited without being opened in an editor. Pour les verrous de document à ouvrir par les Assistants et les entités similaires, ces entités doivent implémenter la IVsDocumentLockHolder interface.In order for document locks to be opened by wizards and similar entities, these entities must implement the IVsDocumentLockHolder interface. Pour inscrire votre détenteur du verrou de document, appelez le RegisterDocumentLockHolder méthode et passer votre IVsDocumentLockHolder implémentation.To register your document lock holder, call the RegisterDocumentLockHolder method, and pass in your IVsDocumentLockHolder implementation. Cela ajoute le détenteur du verrou document la r & DT.Doing so adds your document lock holder to the RDT. Un autre scénario d’implémentation d’un détenteur de verrou de document est si vous ouvrez un document dans une fenêtre outil spécial.Another scenario for implementing a document lock holder is if you open a document through a special tool window. Dans ce cas, vous ne pouvez pas avoir à la fenêtre outil de fermer le document.In this instance, you are unable to have the tool window close the document. Toutefois, l’inscription d’un détenteur de verrou de document dans la r & DT, l’IDE permet d’appeler votre implémentation de la CloseDocumentHolder méthode pour demander une fermeture du document.However, by registering as a document lock holder in the RDT, the IDE can call your implementation of the CloseDocumentHolder method to prompt a close of the document.

Autres utilisations de la Table de Document en cours d’exécutionOther Uses of the Running Document Table

D’autres entités de l’IDE utilisent la r & DT pour obtenir des informations sur les documents.Other entities in the IDE use the RDT to obtain information about documents. Par exemple, le Gestionnaire de contrôle de code source utilise la r & DT pour indiquer au système pour recharger un document dans l’éditeur, une fois qu’il obtient la version la plus récente du fichier.For example, the source control manager uses the RDT to tell the system to reload a document in the editor, after it obtains the newest version of the file. Pour ce faire, le Gestionnaire de contrôle de code source recherche les fichiers dans la r & DT pour voir si un d'entre eux sont ouvert.To do this, the source control manager looks up the files in the RDT to see if any of them are open. Si elles sont alors que le Gestionnaire de contrôle de code source vérifie que la hiérarchie implémente la ReloadItem (méthode).If they are, then the source control manager first checks to see that the hierarchy implements the ReloadItem method. Si le projet n’implémente pas le ReloadItem (méthode), puis la source de contrôle les vérifications de gestionnaire pour une implémentation de la ReloadDocData méthode sur l’objet de données de document directement.If the project does not implement the ReloadItem method, then the source control manager checks for an implementation of the ReloadDocData method on the document data object directly.

L’IDE utilise également la r & DT à resurface (amener au premier plan) un document ouvert, si un utilisateur demande à ce document.The IDE also uses the RDT to resurface (bring to the front) an open document, if a user requests that document. Pour plus d’informations, consultez affichage des fichiers à l’aide de la commande fichier ouvrir.For more information, see Displaying Files By Using the Open File Command. Pour déterminer si un fichier est ouvert dans la r & DT, effectuez les opérations suivantes.To determine whether a file is open in the RDT, do one the following.

  • Requête pour le moniker de document (autrement dit, le chemin d’accès complet de documents) déterminer si l’élément est ouvert.Query for the document moniker (that is, the full document path) to find out if the item is open.

  • Utilisez l’ID de hiérarchie ou un élément pour demander le système de projet pour le chemin d’accès complet de documents, puis recherchez l’élément dans la r & DT.Use the hierarchy or item ID to ask the project system for the full document path, and then look the item up in the RDT.

Voir aussiSee Also

Utilisation de RDT_ReadLock RDT_ReadLock Usage
Persistance et table de document en cours d’exécutionPersistence and the Running Document Table