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 方法來釋放空間。 重新啟動區域類似於其他記錄處理系統中的檢查點。 呼叫這個方法,就表示應用程式會將所有在重新啟動區域之前的記錄都視為完全完成,而且可供日後附加記錄之用。 與任何其他記錄相同,這個方法所寫入的記錄必須在記錄檔中有實際的可用空間,才會正常運作。

適用於