LogRecordSequence.TailPinned LogRecordSequence.TailPinned LogRecordSequence.TailPinned LogRecordSequence.TailPinned Event

定義

シーケンスの末尾を移動する必要があることを示します。Signals the need to move the tail of the sequence.

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 イベントを使用する方法を次の例に示します。This example shows how to use the TailPinned event.

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);  

}  

注釈

このイベントは、レコード シーケンスが領域を使い果たしたときに発行できます。You can fire this event when the record sequence has run out of space. このイベントが発行されると、シーケンスの末尾 (つまり、基本シーケンス番号) が領域の解放のために前方に移動します。When this event is fired, the tail of the sequence (that is, the base sequence number) is moved forward to free up space.

イベントは、レコード シーケンスが何らかの理由で領域を解放する必要があると決定したとき、いつでも発生させることができます。The event can be fired at any time when the record sequence decides that it must free up space, for any reason. たとえば、CLFS ポリシー エンジンは、同じログ ファイルを共有する 2 つのログ クライアントの末尾が離れすぎていると判断したときにイベントを発生させます。For example, the CLFS policy engine may decide to fire the event when it determines that the tails of two log clients sharing the same log file are too far apart. 領域の解放は、再開領域を書き込むか、ログを切り捨てて AdvanceBaseSequenceNumber メソッドを使用して領域を消去することにより行うことができます。Freeing space can be done by either writing restart areas, or truncating the log and using the AdvanceBaseSequenceNumber method to clear space. 「例」のコード サンプルに 2 つ目の方法が示されています。The code sample in the Example section demonstrates the second approach.

WriteRestartArea イベントの外部で TailPinned メソッドを呼び出して、領域を解放することもできます。You can also call the WriteRestartArea method outside of the TailPinned event to free space. 再開領域は、他のログ処理システムにおけるチェックポイントと同様です。A restart area is similar to a checkpoint in other log processing systems. このメソッドの呼び出しは、再開領域が完成し、今後のレコード追加のために使用可能になる前に、アプリケーションが以前のすべてのレコードについて検討していることを示しています。Calling this method indicates that the application considers all prior records before the restart area as fully completed, and usable for future record appends. 他のレコードと同様に、このメソッドによるレコード書き込みが機能するためには、ログ内に実際の空き領域が必要です。Similar to any other records, the record written by this method requires actual free space in the log to function.

適用対象