Compartilhar via


FileRecordSequence.BeginReserveAndAppend Método

Definição

Começa uma operação de reserva assíncrona e acréscimo.

Sobrecargas

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

Começa uma operação de reserva assíncrona e acréscimo. Esse método não pode ser herdado.

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

Começa uma operação de reserva assíncrona e acréscimo. Esse método não pode ser herdado.

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

Começa uma operação de reserva assíncrona e acréscimo. Esse método não pode ser herdado.

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

Parâmetros

data
ArraySegment<Byte>

Uma lista de segmentos de matriz de bytes que serão concatenados e acrescentados como o registro.

nextUndoRecord
SequenceNumber

O número de sequência do próximo registro na ordem especificada pelo usuário.

previousRecord
SequenceNumber

O número de sequência do próximo registro na ordem Anterior.

recordAppendOptions
RecordAppendOptions

Um valor válido de RecordAppendOptions que especifica como os dados devem ser gravados.

reservationCollection
ReservationCollection

A coleção de reservas na qual fazer reservas.

reservations
Int64[]

As reservas a fazer, em bytes.

callback
AsyncCallback

Um retorno de chamada assíncrono opcional, a ser chamado quando o acréscimo for concluído.

state
Object

Um objeto fornecido pelo usuário que distingue essa solicitação de acréscimo assíncrono específica de outras solicitações.

Retornos

Um IAsyncResult que representa essa operação assíncrona, que poderia ainda estar pendente.

Implementações

Exceções

Um ou mais argumentos são null.

Um ou mais argumentos estão fora do intervalo.

reservations não foi criado por essa sequência de registro.

Não é possível executar a operação porque a sequência de registros foi aberta com acesso somente leitura.

A solicitação não pôde ser executada devido a uma exceção de E/S inesperada.

O método foi chamado depois que a sequência foi descartada.

Não há memória suficiente para continuar a execução do programa.

A sequência de registros está cheia.

Nenhuma reserva suficientemente grande para se ajustar a data pode ser encontrada em reservations.

Comentários

Você deve passar o IAsyncResult retornado por esse método para o EndReserveAndAppend método , para garantir que a operação de acréscimo tenha sido concluída e que os recursos possam ser liberados adequadamente. Se ocorrer um erro durante um acréscimo assíncrono, uma exceção não será gerada até que o EndReserveAndAppend método seja chamado com o IAsyncResult retornado por esse método.

Os dados contidos no data parâmetro serão concatenados em uma única matriz de bytes para acrescentar como o registro. No entanto, nenhuma provisão é feita para dividir dados novamente em segmentos de matriz quando o registro é lido.

As reservas especificadas são adicionadas à coleção de reserva fornecida em uma operação atômica com uma operação de acréscimo de registro. Se o acréscimo falhar, nenhum espaço será reservado.

Normalmente, esse método pode ser concluído antes que o registro seja gravado. Para garantir que um registro tenha sido gravado, especifique o ForceFlush sinalizador usando o recordAppendOptions parâmetro ou chame o Flush método .

Se uma sequência de registros tiver sido descartada ou se você passar um argumento inválido, as exceções serão lançadas imediatamente dentro dessa operação. Erros que ocorreram durante uma solicitação de acréscimo assíncrona, por exemplo, uma falha de disco durante a solicitação de E/S, resultarão na geração de exceções quando o EndReserveAndAppend método for chamado.

Aplica-se a

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

Começa uma operação de reserva assíncrona e acréscimo. Esse método não pode ser herdado.

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

Parâmetros

data
IList<ArraySegment<Byte>>

Uma lista de segmentos de matriz de bytes que serão concatenados e acrescentados como o registro.

nextUndoRecord
SequenceNumber

O número de sequência do próximo registro na ordem especificada pelo usuário.

previousRecord
SequenceNumber

O número de sequência do próximo registro na ordem Anterior.

recordAppendOptions
RecordAppendOptions

Um valor válido de RecordAppendOptions que especifica como os dados devem ser gravados.

reservationCollection
ReservationCollection

A coleção de reservas na qual fazer reservas.

reservations
Int64[]

As reservas a fazer, em bytes.

callback
AsyncCallback

Um retorno de chamada assíncrono opcional, a ser chamado quando o acréscimo for concluído.

state
Object

Um objeto fornecido pelo usuário que distingue essa solicitação de acréscimo assíncrono específica de outras solicitações.

Retornos

Um IAsyncResult que representa essa operação assíncrona, que poderia ainda estar pendente.

Implementações

Exceções

Um ou mais argumentos são null.

Um ou mais argumentos estão fora do intervalo.

reservations não foi criado por essa sequência de registro.

Não é possível executar a operação porque a sequência de registros foi aberta com acesso somente leitura.

A solicitação não pôde ser executada devido a uma exceção de E/S inesperada.

O método foi chamado depois que a sequência foi descartada.

Não há memória suficiente para continuar a execução do programa.

A sequência de registros está cheia.

Nenhuma reserva suficientemente grande para se ajustar a data pode ser encontrada em reservations.

Comentários

Você deve passar o IAsyncResult retornado por esse método para o EndReserveAndAppend método , para garantir que a operação de acréscimo tenha sido concluída e que os recursos possam ser liberados adequadamente. Se ocorrer um erro durante um acréscimo assíncrono, uma exceção não será gerada até que o EndReserveAndAppend método seja chamado com o IAsyncResult retornado por esse método.

Os dados contidos no data parâmetro serão concatenados em uma única matriz de bytes para acrescentar como o registro. No entanto, nenhuma provisão é feita para dividir dados novamente em segmentos de matriz quando o registro é lido.

As reservas especificadas são adicionadas à coleção de reserva fornecida em uma operação atômica com uma operação de acréscimo de registro. Se o acréscimo falhar, nenhum espaço será reservado.

Normalmente, esse método pode ser concluído antes que o registro seja gravado. Para garantir que um registro tenha sido gravado, especifique o ForceFlush sinalizador usando o recordAppendOptions parâmetro ou chame o Flush método .

Se uma sequência de registros tiver sido descartada ou se você passar um argumento inválido, as exceções serão lançadas imediatamente dentro dessa operação. Erros que ocorreram durante uma solicitação de acréscimo assíncrona, por exemplo, uma falha de disco durante a solicitação de E/S, resultarão na geração de exceções quando o EndReserveAndAppend método for chamado.

Aplica-se a