LogRecordSequence.ReserveAndAppend 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
自動建立單一保留區,並將記錄附加至順序。
多載
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
自動建立單一保留區,並將記錄附加至順序。 這個方法無法被繼承。 |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
自動建立單一保留區,並將記錄附加至順序。 這個方法無法被繼承。 |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
自動建立單一保留區,並將記錄附加至順序。 這個方法無法被繼承。
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
參數
- data
- IList<ArraySegment<Byte>>
即將串連並附加成記錄之位元組陣列區段的清單。
- userRecord
- SequenceNumber
下一筆記錄的序號 (依照使用者指定的順序)。
- previousRecord
- SequenceNumber
下一筆記錄的序號 (依照之前的順序)。
- recordAppendOptions
- RecordAppendOptions
RecordAppendOptions 的有效值,其中指定資料的寫入方式。
- reservationCollection
- ReservationCollection
要在其中建立保留區的保留區集合。
- reservations
- Int64[]
要建立的保留區 (以位元組為單位)。
傳回
已附加之記錄的序號。
實作
例外狀況
一或多個引數無效。
附加記錄時發生 I/O 錯誤。
記錄順序無法騰出足夠的可用空間來容納新的記錄或建立保留區。
已在處置序列之後呼叫此方法。
一或多個引數為 null
。
userRecord
或 previousRecord
不是介於這個順序的基底序號和最後一個序號之間。
記錄順序是以唯讀存取所開啟,無法執行作業。
沒有足夠的記憶體可以繼續執行程式。
存取指定的記錄順序遭作業系統拒絕。
在 data
找不到有足夠空間可以容納 reservations
的保留區。
備註
包含在 data
參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。
指定的保留區會在不可部分完成的作業 (Atomic Operation) 與記錄附加作業中,加入至提供的保留區集合。 如果附加失敗,就不會保留任何空間。
這個方法通常可以在寫入記錄前完成。 若要確定已寫入某筆記錄,請使用 ForceFlush 參數指定 recordAppendOptions
旗標,或是呼叫 Flush 方法。
適用於
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
自動建立單一保留區,並將記錄附加至順序。 這個方法無法被繼承。
public:
virtual System::IO::Log::SequenceNumber ReserveAndAppend(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber
參數
- data
- ArraySegment<Byte>
即將串連並附加成記錄之位元組陣列區段的清單。
- nextUndoRecord
- SequenceNumber
下一筆記錄的序號 (依照使用者指定的順序)。
- previousRecord
- SequenceNumber
下一筆記錄的序號 (依照之前的順序)。
- recordAppendOptions
- RecordAppendOptions
RecordAppendOptions 的有效值,其中指定資料的寫入方式。
- reservationCollection
- ReservationCollection
ReservationCollection,其中包含要在其中建立保留區的集合。
- reservations
- Int64[]
要建立的保留區 (以位元組為單位)。
傳回
已附加之記錄的序號。
實作
例外狀況
nextUndoRecord
或 previousRecord
對此順序無效。
-或-
無法附加 data
,因為它已超過記錄大小上限。
-或-
reservations
不是由此記錄順序所建立。
一或多個引數為 null
。
nextUndoRecord
或 previousRecord
不是介於這個順序的基底序號和最後一個序號之間。
記錄順序是以唯讀存取所開啟,無法執行作業。
已在處置序列之後呼叫此方法。
沒有足夠的記憶體可以繼續執行程式。
記錄順序已滿。
存取指定的記錄順序遭作業系統拒絕。
在 data
找不到有足夠空間可以容納 reservations
的保留區。
範例
下列範例顯示如何使用這個方法來建立保留區。 請注意,您只能在使用 CLFS 的 LogRecordSequence 類別時執行這項工作。
ReservationCollection reservations = recordSequence.CreateReservationCollection();
long[] lengthOfUndoRecords = new long[] { 1000 };
recordSequence.ReserveAndAppend(recordData,
userSqn,
previousSqn,
RecordSequenceAppendOptions.None,
reservations,
lengthOfUndoRecords);
recordSequence.Append(undoRecordData, // If necessary …
userSqn,
previousSqn,
RecordSequenceAppendOptions.ForceFlush,
reservations);
備註
包含在 data
參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。
指定的保留區會在不可部分完成的作業 (Atomic Operation) 與記錄附加作業中,加入至提供的保留區集合。 如果附加失敗,就不會保留任何空間。
這個方法通常可以在寫入記錄前完成。 若要確定已寫入某筆記錄,請使用 ForceFlush 參數指定 recordAppendOptions
旗標,或是呼叫 Flush 方法。