LogRecordSequence.TailPinned Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Сигнализирует о необходимости переместить завершающую часть последовательности.
public:
virtual event EventHandler<System::IO::Log::TailPinnedEventArgs ^> ^ TailPinned;
public event EventHandler<System.IO.Log.TailPinnedEventArgs> TailPinned;
member this.TailPinned : EventHandler<System.IO.Log.TailPinnedEventArgs>
Public Custom Event TailPinned As EventHandler(Of TailPinnedEventArgs)
Тип события
Реализации
Примеры
В этом примере показано, как использовать событие TailPinned.
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);
}
Комментарии
Это событие можно создать, когда в последовательности записей закончилось свободное пространство. При создании этого события завершающая часть последовательности (то есть базовый порядковый номер) перемещается вперед для освобождения места.
Событие может генерироваться в любой момент, когда последовательности записей по какой бы то ни было причине требуется освободить место. Например, обработчик политик CLFS может создать это событие, когда обнаружит, что завершающие части двух клиентов с общим файлом журнала слишком далеко разошлись. Освобождение пространства может происходить либо при записи области перезапуска, либо при усечении журнала и применении метода AdvanceBaseSequenceNumber для освобождения пространства. Образец кода в разделе "Пример" иллюстрирует второй подход.
Также можно вызвать метод WriteRestartArea независимо от события TailPinned, чтобы освободить место. Область перезаписи аналогична контрольной точке в других системах обработки журналов. Вызов этого метода означает, что приложение рассматривает все предыдущие записи как полностью завершенные и считает, что их можно использовать для дальнейшего добавления записей. Как и всякая другая запись, запись, выполняемая этим методом, требует фактического свободного пространства в журнале.