Správa držáku zámku dokumentu
Platí pro:
Visual Studio Visual Studio pro Mac
Visual Studio
Code
Spuštěná tabulka dokumentů (RDT) udržuje počet otevřených dokumentů a všechny zámky úprav, které mají. Zámek úprav můžete umístit do dokumentu v RDT, když je programově upraven na pozadí, aniž by uživatel viděl otevřený dokument v okně dokumentu. Tyto funkce často používají návrháři, kteří upravují více souborů prostřednictvím grafického uživatelského rozhraní.
Scénáře držáku zámku dokumentu
Soubor "a" má závislost na souboru "b"
Vezměte v úvahu situaci, kdy implementujete standardní editor "A" pro typ souboru "a" a každý soubor typu "a" má odkaz na (nebo závislost na) souboru typu "b". Standardní editor "B" existuje pro soubory typu "b". Když editor "A" otevře soubor "a", načte odkaz na odpovídající soubor "b". Soubor "b" se nezobrazuje, ale editor "A" ho může upravit. Editor "A" získá odkaz na data dokumentu souboru "b" z FindAndLockDocument metody a také udržuje zámek úprav souboru "b". Jakmile editor "A" dokončí úpravy souboru "b", můžete dekrementovat počet zámků úprav na souboru "b" voláním UnlockDocument metody. Tento krok můžete vynechat, pokud jste volali metodu FindAndLockDocument s parametrem dwRDTLockType nastaveným na _VSRDTFLAGS. RDT_NoLock.
Soubor b je otevřen jiným editorem.
V případě, že soubor "b" je již otevřen editorem "B", když se editor "A" pokusí otevřít, existují dva samostatné scénáře pro zpracování:
Pokud je soubor "b" otevřen v kompatibilním editoru, musíte mít editor "A" zaregistrovat zámek úprav dokumentu na souboru "b" pomocí RegisterDocumentLockHolder metody. Jakmile editor "A" dokončí úpravu souboru "b", zrušte registraci zámku úprav dokumentu pomocí UnregisterDocumentLockHolder metody.
Pokud je soubor "b" otevřen nekompatibilním způsobem, můžete buď nechat pokus o otevření souboru "b" editorem "A" selžou, nebo můžete nechat zobrazení přidružené k editoru "A" částečně otevřít a zobrazit odpovídající chybovou zprávu. Chybová zpráva by měla uživateli dát pokyn, aby zavřel soubor "b" v nekompatibilním editoru a pak znovu otevřít soubor "a" pomocí editoru "A". Můžete také implementovat metodu QueryCloseRunningDocument sady Visual Studio SDK a vyzvat uživatele k zavření souboru "b", který je otevřen v nekompatibilním editoru. Pokud uživatel zavře soubor "b", bude otevření souboru "a" v editoru A normálně pokračovat.
Další aspekty zámku úprav dokumentu
Pokud je editor "A" jediným editorem, který má zámek úprav dokumentu v souboru "b", než kdyby editor "B" obsahuje také zámek pro úpravy dokumentu v souboru "b". V sadě Visual Studio je návrhář tříd příkladem vizuálního návrháře, který neobsahuje zámek úprav v přidruženém souboru kódu. To znamená, že pokud má uživatel otevřený diagram tříd v návrhovém zobrazení a přidružený soubor kódu otevřený současně a pokud uživatel upraví soubor kódu, ale neuloží změny, změny se také ztratí v souboru diagramu tříd (.cd). Pokud má Návrhář tříd jediný zámek úprav dokumentu v souboru kódu, uživatel není požádán o uložení změn při zavření souboru kódu. Integrované vývojové prostředí (IDE) požádá uživatele, aby změny uložil až po zavření Návrháře tříd. Uložené změny se projeví v obou souborech. Pokud návrhář tříd i editor souborů kódu držely v souboru kódu zámky úprav dokumentu, zobrazí se uživateli výzva k uložení při zavření souboru kódu nebo formuláře. V tomto okamžiku se uložené změny projeví ve formuláři i v souboru kódu. Další informace odiagramch
Mějte na paměti, že pokud potřebujete umístit zámek úprav do dokumentu pro jiný než editor, musíte rozhraní implementovat IVsDocumentLockHolder .
Návrhář uživatelského rozhraní, který upravuje soubory kódu programově, provádí změny více než jednoho souboru. V takových případech SaveItemsViaDlg metoda zpracovává ukládání jednoho nebo více dokumentů pomocí dialogového okna Chcete uložit změny do následujících položek?