IRecordSequence.BeginReserveAndAppend 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
在衍生類別中覆寫時,開始非同步的保留和附加作業。
多載
BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)
在衍生類別中覆寫時,開始非同步的保留和附加作業。
public:
IAsyncResult ^ BeginReserveAndAppend(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, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReserveAndAppend (ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, long[] reservations, AsyncCallback callback, object state);
abstract member BeginReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] * AsyncCallback * obj -> IAsyncResult
Public Function BeginReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, reservations As Long(), callback As AsyncCallback, state As Object) As IAsyncResult
參數
- data
- ArraySegment<Byte>
即將串連並附加成記錄之位元組陣列區段的清單。
- nextUndoRecord
- SequenceNumber
下一筆記錄的序號 (依照使用者指定的順序)。
- previousRecord
- SequenceNumber
下一筆記錄的序號 (依照之前的順序)。
- recordAppendOptions
- RecordAppendOptions
RecordAppendOptions 的有效值,其中指定資料的寫入方式。
- reservationCollection
- ReservationCollection
要在其中建立保留區的保留區集合。
- reservations
- Int64[]
要建立的保留區 (以位元組為單位)。
- callback
- AsyncCallback
選擇性的非同步回呼,在附加完成時呼叫。
- state
- Object
使用者所提供的物件,可區別此特定非同步附加要求與其他要求。
傳回
IAsyncResult,表示可能還在暫止中的這項非同步作業。
例外狀況
一或多個引數無效。
附加記錄時發生 I/O 錯誤。
記錄順序無法騰出足夠的可用空間來容納新的記錄或建立保留區。
已在處置序列之後呼叫此方法。
備註
您應該將這個方法所傳回的 IAsyncResult 傳遞給 EndReserveAndAppend 方法,以確定附加作業已完成,而且可以適當地釋放資源。 如果在非同步附加期間發生錯誤,就要等到系統以這個方法傳回的 EndReserveAndAppend 呼叫 IAsyncResult 方法時,才會擲回例外狀況。
包含在 data
參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。
指定的保留區會在不可部分完成的作業 (Atomic Operation) 與記錄附加作業中,加入至提供的保留區集合。 如果附加失敗,就不會保留任何空間。
這個方法通常可以在寫入記錄前完成。 若要確定已寫入某筆記錄,請使用 ForceFlush 參數指定 recordAppendOptions
旗標,或是呼叫 Flush 方法。
如果處置了記錄順序,或是您傳遞了無效的引數,就會立即在此作業中擲回例外狀況。 在非同步附加要求期間發生的錯誤 (例如,在 I/O 要求期間發生的磁碟錯誤) 會導致在呼叫 EndReserveAndAppend 方法時擲回例外狀況。
適用於
BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)
在衍生類別中覆寫時,開始非同步的保留和附加作業。
public:
IAsyncResult ^ BeginReserveAndAppend(System::Collections::Generic::IList<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, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReserveAndAppend (System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, long[] reservations, AsyncCallback callback, object state);
abstract member BeginReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] * AsyncCallback * obj -> IAsyncResult
Public Function BeginReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, reservations As Long(), callback As AsyncCallback, state As Object) As IAsyncResult
參數
- data
- IList<ArraySegment<Byte>>
即將串連並附加成記錄之位元組陣列區段的清單。
- nextUndoRecord
- SequenceNumber
下一筆記錄的序號 (依照使用者指定的順序)。
- previousRecord
- SequenceNumber
下一筆記錄的序號 (依照之前的順序)。
- recordAppendOptions
- RecordAppendOptions
RecordAppendOptions 的有效值,其中指定資料的寫入方式。
- reservationCollection
- ReservationCollection
要在其中建立保留區的保留區集合。
- reservations
- Int64[]
要建立的保留區 (以位元組為單位)。
- callback
- AsyncCallback
選擇性的非同步回呼,在附加完成時呼叫。
- state
- Object
使用者所提供的物件,可區別此特定非同步附加要求與其他要求。
傳回
IAsyncResult,表示可能還在暫止中的這項非同步作業。
例外狀況
一或多個引數無效。
附加記錄時發生 I/O 錯誤。
記錄順序無法騰出足夠的可用空間來容納新的記錄或建立保留區。
已在處置序列之後呼叫此方法。
備註
您應該將這個方法所傳回的 IAsyncResult 傳遞給 EndReserveAndAppend 方法,以確定附加作業已完成,而且可以適當地釋放資源。 如果在非同步附加期間發生錯誤,就要等到系統以這個方法傳回的 EndReserveAndAppend 呼叫 IAsyncResult 方法時,才會擲回例外狀況。
包含在 data
參數中的資料將串連至單一位元組陣列中,以便附加成記錄。 不過,在讀取記錄時,並不會將資料分割回陣列區段。
指定的保留區會在不可部分完成的作業 (Atomic Operation) 與記錄附加作業中,加入至提供的保留區集合。 如果附加失敗,就不會保留任何空間。
這個方法通常可以在寫入記錄前完成。 若要確定已寫入某筆記錄,請使用 ForceFlush 參數指定 recordAppendOptions
旗標,或是呼叫 Flush 方法。
如果處置了記錄順序,或是您傳遞了無效的引數,就會立即在此作業中擲回例外狀況。 在非同步附加要求期間發生的錯誤 (例如,在 I/O 要求期間發生的磁碟錯誤) 會導致在呼叫 EndReserveAndAppend 方法時擲回例外狀況。