FileRecordSequence.BeginReserveAndAppend 方法

定义

开始异步保留和追加操作。

重载

BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)

开始异步保留和追加操作。 无法继承此方法。

BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)

开始异步保留和追加操作。 无法继承此方法。

BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)

开始异步保留和追加操作。 无法继承此方法。

public:
 virtual 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
override this.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,它表示可能仍处于挂起状态的当前异步操作。

实现

例外

一个或多个参数为 null

一个或多个自变量超出范围。

reservations 不是由此记录序列创建的。

由于记录序列是通过只读访问权限打开的,因此无法执行该操作。

由于出现意外的 I/O 异常,因此无法执行该请求。

该方法是在序列已释放之后调用的。

没有足够的内存来继续执行该程序。

记录序列已满。

data 中找不到足以容纳 reservations 的预留。

注解

应将此方法返回的 IAsyncResult 传递给 EndReserveAndAppend 方法,以确保追加操作已完成并能够适当释放资源。 如果在异步追加过程中发生错误,则在使用此方法返回的 EndReserveAndAppend 调用 IAsyncResult 方法之前,不会引发异常。

包含在 data 参数中的数据将连接成单个字节数组,以便以记录形式追加。 但在读取记录时,无法将数据重新拆分为数组段。

在原子操作中,使用记录追加操作将指定的预留添加到所提供的预留集合。 如果追加失败,将不保留任何空间。

通常,此方法可以在写入记录之前完成。 若要确保记录已写入,请使用 ForceFlush 参数指定 recordAppendOptions 标志,或者调用 Flush 方法。

如果记录序列已经释放,或者如果传递了无效自变量,此操作内将立即引发异常。 异步追加请求过程中发生的错误(例如,I/O 请求过程中的磁盘故障)将导致在调用 EndReserveAndAppend 方法时引发异常。

适用于

BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)

开始异步保留和追加操作。 无法继承此方法。

public:
 virtual 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
override this.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,它表示可能仍处于挂起状态的当前异步操作。

实现

例外

一个或多个参数为 null

一个或多个自变量超出范围。

reservations 不是由此记录序列创建的。

由于记录序列是通过只读访问权限打开的,因此无法执行该操作。

由于出现意外的 I/O 异常,因此无法执行该请求。

该方法是在序列已释放之后调用的。

没有足够的内存来继续执行该程序。

记录序列已满。

data 中找不到足以容纳 reservations 的预留。

注解

应将此方法返回的 IAsyncResult 传递给 EndReserveAndAppend 方法,以确保追加操作已完成并能够适当释放资源。 如果在异步追加过程中发生错误,则在使用此方法返回的 EndReserveAndAppend 调用 IAsyncResult 方法之前,不会引发异常。

包含在 data 参数中的数据将连接成单个字节数组,以便以记录形式追加。 但在读取记录时,无法将数据重新拆分为数组段。

在原子操作中,使用记录追加操作将指定的预留添加到所提供的预留集合。 如果追加失败,将不保留任何空间。

通常,此方法可以在写入记录之前完成。 若要确保记录已写入,请使用 ForceFlush 参数指定 recordAppendOptions 标志,或者调用 Flush 方法。

如果记录序列已经释放,或者如果传递了无效自变量,此操作内将立即引发异常。 异步追加请求过程中发生的错误(例如,I/O 请求过程中的磁盘故障)将导致在调用 EndReserveAndAppend 方法时引发异常。

适用于