_VSRDTFLAGS. RDT_ReadLock 현재 Visual Studio IDE에서 열려 있는 모든 문서 목록인 RDT(실행 중인 문서 테이블)에서 문서를 잠그는 논리를 제공하는 플래그입니다. 이 플래그는 문서를 여는 시기와 문서가 사용자 인터페이스에 표시되거나 메모리에 보이지 않게 유지되는지 여부를 결정합니다.
일반적으로 _VSRDTFLAGS 사용합니다. 다음 중 하나가 true인 경우 RDT_ReadLock.
보이지 않고 읽기 전용으로 문서를 열려고 하지만 아직 문서를 소유해야 하는 IVsHierarchy 문서가 설정되지 않았습니다.
사용자가 UI에 표시한 다음 닫으려고 시도하기 전에 보이지 않게 열린 문서를 저장하라는 메시지가 사용자에게 표시되도록 합니다.
표시 및 보이지 않는 문서를 관리하는 방법
사용자가 UI IVsHierarchy 에서 문서를 열면 문서의 소유자를 설정하고 _VSRDTFLAGS 합니다. RDT_EditLock 플래그를 설정해야 합니다. 소유자를 설정할 수 없는 IVsHierarchy 경우 사용자가 모두 저장 을 클릭하거나 IDE를 닫을 때 문서가 저장되지 않습니다. 즉, 문서가 메모리에서 수정된 위치에 보이지 않게 열려 있고 종료 시 문서를 저장하라는 메시지가 표시되거나 모두 저장 이 선택 RDT_ReadLock 되면 저장하라는 메시지가 표시되면 사용할 수 없습니다. 대신, __VSREGDOCLOCKHOLDER 때를 IVsDocumentLockHolder 사용하고 RDT_EditLock 등록해야 합니다. RDLH_WeakLockHolder 플래그입니다.
RDT_EditLock 및 문서 수정
앞에서 언급한 플래그는 사용자가 문서를 볼 수 있는 DocumentWindow로 열 때 문서의 보이지 않는 열기를 생성 RDT_EditLock 한다는 것을 나타냅니다. 이 경우 표시되는 DocumentWindow가 닫혀 있으면 사용자에게 저장 프롬프트가 표시됩니다.
Microsoft.VisualStudio.Package.Automation.OAProject.CodeModel 서비스를 사용하는 IVsInvisibleEditorManager 구현은 처음에만 수행될 때 RDT_ReadLock 작동합니다(즉, 정보를 구문 분석하기 위해 문서를 보이지 않게 열 때). 나중에 문서를 수정해야 하는 경우 잠금이 약한 RDT_EditLock 업그레이드됩니다. 사용자가 표시되는 DocumentWindowCodeModel에서 문서를 열면 's weak RDT_EditLock 가 해제됩니다.
사용자가 DocumentWindow를 닫고 열려 있는 문서를 CodeModel 저장하라는 메시지가 표시되면 아니요를 선택하면 구현에서 문서의 모든 정보를 삭제하고 다음에 문서에 대한 추가 정보가 필요할 때 보이지 않게 디스크에서 문서를 다시 엽니다. 이 동작의 미묘한 점은 사용자가 보이지 않는 열린 문서의 DocumentWindow 를 열고 수정하고 닫은 다음 문서를 저장하라는 메시지가 표시되면 아니요 를 선택하는 인스턴스입니다. 이 경우 문서에 문서가 있으면 RDT_ReadLock문서가 실제로 닫혀 있지 않으며 사용자가 문서를 저장하지 않도록 선택했음에도 불구하고 수정된 문서가 보이지 않게 메모리에서 열린 상태로 유지됩니다.
보이지 않는 문서 열기가 약한 RDT_EditLock경우 사용자가 문서를 눈에 띄게 열고 다른 잠금이 유지되지 않을 때 잠금을 생성합니다. 사용자가 DocumentWindow 를 닫고 문서를 저장하라는 메시지가 표시되면 아니요 를 선택하면 문서를 메모리에서 닫아야 합니다. 즉, 보이지 않는 클라이언트는 RDT 이벤트를 수신 대기하여 이 항목을 추적해야 합니다. 다음에 문서가 필요할 때 문서를 다시 열어야 합니다.