LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přesune základní pořadové číslo protokolu vpřed. Tuto metodu nelze dědit.
public:
virtual void AdvanceBaseSequenceNumber(System::IO::Log::SequenceNumber newBaseSequenceNumber);
public void AdvanceBaseSequenceNumber (System.IO.Log.SequenceNumber newBaseSequenceNumber);
abstract member AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
override this.AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
Public Sub AdvanceBaseSequenceNumber (newBaseSequenceNumber As SequenceNumber)
Parametry
- newBaseSequenceNumber
- SequenceNumber
Určuje nový základ SequenceNumber protokolu. To musí být v rozsahu mezi aktuálním základním pořadovém číslem a posledním pořadovém číslem protokolu včetně.
Implementuje
Výjimky
newBaseSequenceNumber
není pro tuto sekvenci platný.
Nový nebo existující konec archivu nebo základ aktivního protokolu je neplatný.
-nebo-
newBaseSequenceNumber
není mezi základním a posledním pořadovými čísly této sekvence.
Požadavek nelze provést kvůli neočekávané výjimce vstupně-výstupních operací.
-nebo-
Požadavek nelze provést kvůli chybě vstupně-výstupního zařízení.
Zadaný protokol nemá žádné rozsahy. Aby bylo možné použít posloupnost záznamů, musí být vytvořen jeden nebo více rozsahů.
Metoda byla volána po odstranění sekvence.
K pokračování v provádění programu není dostatek paměti.
Operační systém odepře přístup k zadané sekvenci protokolu.
Sekvence záznamů je plná.
Příklady
Tento příklad ukazuje, jak pomocí AdvanceBaseSequenceNumber metody s událostí TailPinned uvolnit místo v sekvenci protokolu.
recordSequence.RetryAppend = true;
recordSequence.TailPinned += new EventHandler<TailPinnedEventArgs>(HandleTailPinned);
void HandleTailPinned(object sender, TailPinnedEventArgs tailPinnedEventArgs)
{
// tailPinnedEventArgs.TargetSequenceNumber is the target
// sequence number to free up space to.
// However, this sequence number is not necessarily valid. We have
// to use this sequence number as a starting point for finding a
// valid point within the log to advance toward. You need to
// identify a record with a sequence number equal to, or greater
// than TargetSequenceNumber; let's call this
// realTargetSequenceNumber. Once found, move the base
recordSequence.AdvanceBaseSequenceNumber(realTargetSequenceNumber);
}
Poznámky
Tato metoda se často používá s událostí TailPinned k uvolnění místa v záznamu. Událost TailPinned označuje, že chvost sekvence (tj. základní pořadové číslo) musí být posunut dopředu, aby se uvolnilo místo. Uvolnění místa lze provést buď zápisem oblastí restartování pomocí WriteRestartArea metody, nebo zkrácením protokolu a pomocí AdvanceBaseSequenceNumber metody přesunout základní pořadové číslo protokolu na číslo určené parametrem newBaseSequenceNumber
. Ukázka kódu v části Příklad ukazuje druhý přístup.
Všimněte si, že volání této metody je stejné jako nastavení nového čísla základní sekvence pomocí WriteRestartArea metody s tím rozdílem, že do protokolu není zapsán žádný záznam restartování.