Поделиться через


таблица запущенных документов

Интегрированная среда разработки поддерживает список всех открытых документов в данный момент во внутренней структуре выполнение, называемой таблицей документа (RDT). Этот список включает все открытые документы в памяти, независимо от того, редактируется ли эти документы в данный момент. Документ любой элемент, который сохранен, включая хранимые процедуры, открытые в редакторе, а также в файлах проекта или в основном файле проекта (например, файл *.vcproj).

Элементы таблицы текущих документов

Запуск таблица документа содержит следующие записи.

Элемент

Описание

Моникер документа

Строка, уникально идентифицирующее объект данных документа. Это будет абсолютный путь к файлу для системы проектов, которая управляет файлов (например, C:\MyProject\MyFile). Эта строка используется также для проектов, сохраненных в хранит за исключением файловых систем, таких как хранимые процедуры в базе данных. В этом случае система проекта может разработать уникальную строку, которая может распознать и, возможно, чтобы указать, как сохранить документ.

Владелец иерархии

Объект иерархии, который содержит документ, как представлено IVsHierarchy интерфейс.

Идентификатор элемента

Идентификатор элемента для конкретного элемента в иерархии. Это значение является уникальным среди всех документов в иерархии, которой принадлежит данный документ, но не гарантируется, что эти значения уникально в различные иерархии.

Объект данных документа

Как минимум, эта IUnknown

. Интегрированная среда разработки не требует указанного интерфейса, IUnknown интерфейс для объекта данных документа специализированного редактора. Однако для стандартного редактора, реализация редактора IVsPersistDocData2 интерфейс, обрабатывающий вызовы сохраняемости файла из проекта. Дополнительные сведения см. в разделе Сохранить документ стандартный.

Флаги

Пометит этот элемент управления сохраняется ли документ, применяется ли блокировка чтения или правка и т д, можно определить, когда записи добавляются к RDT. Дополнительные сведения см. в разделе _VSRDTFLAGS.

Количество блокировок правки

Блокирует объем правки. Блокировка правки указывает, что некоторый редактор имеет открытый документ для редактирования. Если количество правки блокирует переходы в нуль, пользователю предлагается сохранить документ, если он был изменен. Например, при каждом открытии документа в редакторе использование Новое окно команды правка добавлена блокировку для этого документа в RDT. Блокировка правки, будут набор, документ иметь идентификатор иерархии или элемента

Количество блокировок чтения

Количество чтения блокирует. Блокировка чтения указывает, что выполняется чтение документа через некоторый механизм, как мастер. Блокировка чтения сохраняет документ живой в RDT пока показывая, что документ не могут быть изменены. Можно задать блокировки чтения, даже если документ не имеет идентификатор иерархии или элемента Эта функция позволяет открыть документ в память и ввести его в RDT без документов, именной любой иерархии. Эта функция используется редко.

Держатель блокировки

Экземпляр IVsDocumentLockHolder интерфейс. Держатель блокировки на функциями как открытые документы и мастера, которые изменяют вне редактора. Держатель блокировки позволяет функции добавления блокировка правки документа для предотвращения документ из быть закрытым, когда он по-прежнему редактирования. Обычно правка блокирует только добавлена окнами документа (то есть редакторами).

Каждая запись в RDT имеет уникальный идентификатор иерархии или элемента, связанные с ней, которая обычно соответствует одному узлу в проекте. Все документы, доступные для изменения обычно принадлежат иерархией. Записи, сделанные в элементе управления RDT, проект или-больше точн-которому иерархия в настоящий момент имеет редактируемой в данный момент объект данных документа. Использование сведений в RDT интегрированная среда разработки может помешать его открытия документа с несколькими проектами одновременно.

Иерархия также контролирует сохраняемость данных и использует сведения из RDT для обновления Сохранить и Сохранить как диалоговые окна. Когда пользователи изменяют документа, а затем выберите команду Выход команда из Файл меню, интегрированная среда разработки предлагает их с Сохранить изменения диалоговое окно для отображения ним все проекты и элементы проекта, который в настоящий момент изменены. Это позволяет пользователям выбирать, какие документов, подлежащий сохранению. Список документов для сохранения (то есть эти документы, содержащие изменения) создается из RDT. Все элементы, которые предполагается просматривать в Сохранить изменения диалоговое окно " по выйти из приложения должно иметь записи в RDT. Координаты RDT, документы сохраняются и предложено ли пользователь об операции сохранения, используя значения, указанные в записи флагов для каждого документа. Дополнительные сведения о флагах см. в разделе RDT _VSRDTFLAGS перечисление.

Правка и блокирует чтения блокирует

Правка и блокирует чтения блокирует пребывайте в RDT. Увеличивает и уменьшает окна документа правка блокирует. Таким образом, когда пользователь открывает новое окно документа, объем блокирования правки увеличивает на единицу. Если номер правки блокирует достигает нуля, просигнализированы, что сохраняющего или сохранение иерархия данные для связанного документа. Иерархия может сохранять данные в любом случае, включая сохраняется как файл или в качестве элемента в репозитории. Можно использовать LockDocument метод IVsRunningDocumentTable интерфейс для добавления правка блокирует и считывается и блокирует UnlockDocument метод, чтобы удалить эти блокирует.

Обычно при создании окна документов для редактора, граница окна автоматически добавляет блокировку правки для документа, указанного в RDT. Однако при создании пользовательского представления документа, который не использует окно документа стандарта (то есть, он не реализует IVsWindowFrame интерфейс), затем необходимо задать собственную кратковременную блокировку производится правки. Например, в мастере, документ изменять без его открытия в редакторе. Для его открытия документа блокирует мастерами и других подобных сущности, эти сущности, должны реализовывать IVsDocumentLockHolder интерфейс. Для регистрации держатель блокировки документа, вызовите RegisterDocumentLockHolder метод и передайте ваше IVsDocumentLockHolder реализация. Это добавляет этот держатель блокировки документа в RDT. Другой скрипт для реализации держатель блокировки документа при открытии документа через специальное окно инструментов. В этом случае не может иметь окно инструментов, чтобы закрыть документ. Однако при регистрации как держатель блокировки документа в RDT интегрированная среда разработки может вызвать реализация CloseDocumentHolder метод, чтобы запросить конец документа.

Friend использует таблицы текущих документов

Другие сущности в интегрированной среде разработки используется RDT для получения сведений о документах. Например, диспетчер системы управления версиями использует RDT, чтобы указать, что система перезагрузила документ в редакторе, после того как он получает самую новую версию файла. Для этого найдите, что поиск файлов в RDT, см. диспетчер системы управления версиями, если любое из них открыто. Если они, то диспетчер системы управления версиями сначала проверяет, что иерархия реализует ReloadItem метод. Если проект не реализует ReloadItem метод, затем диспетчер проверяет для реализации системы управления версиями ReloadDocData метод непосредственно на объекте данных документа.

Интегрированная среда разработки также использует RDT для resurface (вверх) принесите открытый документ, если запросов пользователя, документ. Дополнительные сведения см. в разделе Отображение файлов с помощью команды открыть файл. Чтобы указать, относится ли файл открыт в RDT, выполните следующие действия.

  • Запрос для моникера документа (то есть пути полного документа) необходимо выяснить, если элемент открыт.

  • Используйте иерархию или идентификатор элемента, чтобы запросить система проектов полный путь документа, а затем вид элемент вверх по RDT.

См. также

Ссылки

OpenItem

CreateDocumentWindow

Основные понятия

иерархии в Visual Studio

Основы типа проекта