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 события, чтобы освободить место. Область перезапуска аналогична контрольной точке в других системах обработки журналов. Вызов этого метода указывает, что приложение считает все предыдущие записи до завершения области перезапуска полностью завершенной и можно использовать для добавления будущих записей. Как и в других записях, запись, написанная этим методом, требует фактического свободного места в журнале для работы.

Применяется к