Поделиться через


IRecordSequence.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:
 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, представляющий данную асинхронную операцию, которая может все еще ожидать выполнения.

Исключения

Один или несколько аргументов являются недопустимыми.

При добавлении записи произошла ошибка ввода-вывода.

Последовательности записей не удалось выделить достаточно свободного пространства для новой записи или выполнить резервирование.

Метод был вызван после удаления последовательности.

Комментарии

Чтобы обеспечить завершение операции добавления и освободить соответствующие ресурсы, необходимо передать значение IAsyncResult, возвращенное этим методом, в метод EndReserveAndAppend. Если ошибка возникла при выполнении асинхронного добавления, исключение не будет создано до тех пор, пока метод EndReserveAndAppend не будет вызван со значением IAsyncResult, возвращенным данным методом.

Данные, содержащиеся в параметре data, будут сцеплены в единый массив байтов для добавления в качестве записи. Однако не делается допущение об обратном разделении данных на фрагменты массива при чтении записи.

Заданные резервирования добавляются в предоставленную коллекцию резервирования при помощи атомарной операции добавления записи. Если выполнить добавление не удается, место не резервируется.

Обычно этот метод может завершить работу до того, как запись будет записана. Чтобы запись точно была записана, либо укажите флаг ForceFlush с помощью параметра recordAppendOptions, либо вызовите метод Flush.

Если последовательность записей была удалена, или если передается неверный аргумент, исключения создаются немедленно, в пределах данной операции. Ошибки, возникшие при выполнении запроса асинхронного добавления, например ошибка диска в процессе запроса ввода-вывода, приводят к созданию исключений при вызове метода 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, представляющий данную асинхронную операцию, которая может все еще ожидать выполнения.

Исключения

Один или несколько аргументов являются недопустимыми.

При добавлении записи произошла ошибка ввода-вывода.

Последовательности записей не удалось выделить достаточно свободного пространства для новой записи или выполнить резервирование.

Метод был вызван после удаления последовательности.

Комментарии

Чтобы обеспечить завершение операции добавления и освободить соответствующие ресурсы, необходимо передать значение IAsyncResult, возвращенное этим методом, в метод EndReserveAndAppend. Если ошибка возникла при выполнении асинхронного добавления, исключение не будет создано до тех пор, пока метод EndReserveAndAppend не будет вызван со значением IAsyncResult, возвращенным данным методом.

Данные, содержащиеся в параметре data, будут сцеплены в единый массив байтов для добавления в качестве записи. Однако не делается допущение об обратном разделении данных на фрагменты массива при чтении записи.

Заданные резервирования добавляются в предоставленную коллекцию резервирования при помощи атомарной операции добавления записи. Если выполнить добавление не удается, место не резервируется.

Обычно этот метод может завершить работу до того, как запись будет записана. Чтобы запись точно была записана, либо укажите флаг ForceFlush с помощью параметра recordAppendOptions, либо вызовите метод Flush.

Если последовательность записей была удалена, или если передается неверный аргумент, исключения создаются немедленно, в пределах данной операции. Ошибки, возникшие при выполнении запроса асинхронного добавления, например ошибка диска в процессе запроса ввода-вывода, приводят к созданию исключений при вызове метода EndReserveAndAppend.

Применяется к