Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
_VSRDTFLAGS. RDT_ReadLock ist eine Kennzeichnung, die Logik zum Sperren eines Dokuments in der Ausführungsdokumenttabelle (RUNNING Document Table, RDT) bereitstellt. Dabei handelt es sich um die Liste aller Dokumente, die derzeit in der Visual Studio-IDE geöffnet sind. Dieses Kennzeichen bestimmt, wann Dokumente geöffnet werden und ob ein Dokument auf der Benutzeroberfläche sichtbar oder im Arbeitsspeicher unsichtbar gehalten wird.
Im Allgemeinen verwenden Sie _VSRDTFLAGS. RDT_ReadLock , wenn einer der folgenden Werte zutrifft:
Sie möchten ein Dokument unsichtbar und schreibgeschützt öffnen, aber es ist noch nicht eingerichtet, das IVsHierarchy es besitzen soll.
Sie möchten, dass der Benutzer aufgefordert wird, ein Dokument zu speichern, das unsichtbar geöffnet wurde, bevor der Benutzer es in der Benutzeroberfläche anzeigte und dann versucht hat, es zu schließen.
So verwalten Sie sichtbare und unsichtbare Dokumente
Wenn ein Benutzer ein Dokument auf der Benutzeroberfläche öffnet, muss ein IVsHierarchy Besitzer für das Dokument eingerichtet und ein _VSRDTFLAGS. RDT_EditLock Kennzeichnung muss festgelegt werden. Wenn kein IVsHierarchy Besitzer eingerichtet werden kann, wird das Dokument nicht gespeichert, wenn der Benutzer auf " Alle speichern " klickt oder die IDE schließt. Dies bedeutet, dass ein Dokument nicht sichtbar geöffnet ist, wo es im Arbeitsspeicher geändert wird, und der Benutzer aufgefordert wird, das Dokument beim Herunterfahren zu speichern oder zu speichern, wenn "Alles speichern" ausgewählt wird, und dann kann kein RDT_ReadLock Verwendet werden. Stattdessen müssen Sie ein RDT_EditLockIVsDocumentLockHolder und registrieren, wenn ein __VSREGDOCLOCKHOLDER. RDLH_WeakLockHolder Kennzeichnung.
RDT_EditLock und Dokumentänderung
Die oben erwähnte Kennzeichnung gibt an, dass das unsichtbare Öffnen des Dokuments beim RDT_EditLock Öffnen des Dokuments durch den Benutzer in ein sichtbares DocumentWindow-Objekt führt. In diesem Fall wird dem Benutzer eine Eingabeaufforderung zum Speichern angezeigt, wenn das sichtbare Dokumentfenster geschlossen wird.
Microsoft.VisualStudio.Package.Automation.OAProject.CodeModel Implementierungen, die den IVsInvisibleEditorManager Dienst verwenden, funktionieren anfangs, wenn nur ein RDT_ReadLock Dokument verwendet wird (d. h., wenn das Dokument für die Analyse von Informationen unsichtbar geöffnet wird). Wenn das Dokument später geändert werden muss, wird die Sperre auf eine schwache RDT_EditLock aktualisiert. Wenn der Benutzer das Dokument dann in einem sichtbaren DocumentWindow öffnet, wird die CodeModelSchwachstelle RDT_EditLock freigegeben.
Wenn der Benutzer dann das DocumentWindow schließt und " Nein " auswähelt, wenn sie zum Speichern des geöffneten Dokuments aufgefordert wird, entsorgt die CodeModel Implementierung alle Informationen im Dokument und öffnet das Dokument beim nächsten Mal, wenn weitere Informationen für das Dokument erforderlich sind. Die Subtilität dieses Verhaltens ist eine Instanz, in der der Benutzer das DocumentWindow des unsichtbaren geöffneten Dokuments öffnet, ändert es, schließt es und wählt dann "Nein " aus, wenn sie zum Speichern des Dokuments aufgefordert wird. Wenn das Dokument über ein RDT_ReadLockDokument verfügt, wird das Dokument in diesem Fall nicht wirklich geschlossen, und das geänderte Dokument bleibt im Arbeitsspeicher unsichtbar geöffnet, obwohl der Benutzer das Dokument nicht gespeichert hat.
Wenn beim unsichtbaren Öffnen des Dokuments eine schwache RDT_EditLockSperre verwendet wird, wird sie gesperrt, wenn der Benutzer das Dokument sichtbar öffnet und keine anderen Sperren gehalten werden. Wenn der Benutzer " DocumentWindow " schließt und " Nein " auswähelt, wenn sie zum Speichern des Dokuments aufgefordert wird, muss das Dokument aus dem Arbeitsspeicher geschlossen werden. Dies bedeutet, dass der unsichtbare Client auf RDT-Ereignisse lauschen muss, um dieses Vorkommen nachzuverfolgen. Wenn das Dokument das nächste Mal erforderlich ist, muss das Dokument erneut geöffnet werden.