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

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