LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) 方法

定義

將記錄檔的基底序號往前移動。 這個方法無法被繼承。

public:
 virtual void AdvanceBaseSequenceNumber(System::IO::Log::SequenceNumber newBaseSequenceNumber);
public void AdvanceBaseSequenceNumber (System.IO.Log.SequenceNumber newBaseSequenceNumber);
abstract member AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
override this.AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
Public Sub AdvanceBaseSequenceNumber (newBaseSequenceNumber As SequenceNumber)

參數

newBaseSequenceNumber
SequenceNumber

指定記錄的新基底 SequenceNumber。 必須介於記錄的目前基底序號和最後一個序號之間。

實作

例外狀況

newBaseSequenceNumber 對此順序無效。

新的或現有封存結尾或作用中記錄的基底無效。

-或-

newBaseSequenceNumber 不是介於這個順序的基底序號和最後一個序號之間。

由於意外的 I/O 例外狀況,所以無法執行要求。

-或-

因為 I/O 裝置錯誤,所以無法執行要求。

指定的記錄沒有任何延伸區。 必須先建立一或多個延伸區,才能使用記錄順序。

已在處置序列之後呼叫此方法。

沒有足夠的記憶體可以繼續執行程式。

存取指定的記錄順序遭作業系統拒絕。

記錄順序已滿。

範例

這個範例將示範如何使用 AdvanceBaseSequenceNumber 方法搭配 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);  

}  

備註

這個方法通常與 TailPinned 事件搭配使用,以釋放記錄中的空間。 TailPinned 事件表示,必須將順序的結尾 (即基底序號) 往前移動才能釋放空間。 使用 WriteRestartArea 方法寫入重新啟動區域,或是截斷記錄並使用 AdvanceBaseSequenceNumber 方法將記錄基底序號依照 newBaseSequenceNumber 參數所指定的往前移一個號碼,都可以達到釋放空間的目的。 <範例>一節中,程式碼範例會示範其第二種處理方式。

請注意,呼叫這個方法與使用 WriteRestartArea 方法設定新基底序號的效果一樣,都不會在記錄中寫入重新啟動記錄。

適用於