LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método

Definição

Avança o número base da sequência do log. Este método não pode ser herdado.

public:
 virtual void AdvanceBaseSequenceNumber(System::IO::Log::SequenceNumber newBaseSequenceNumber);
public void AdvanceBaseSequenceNumber(System.IO.Log.SequenceNumber newBaseSequenceNumber);
abstract member AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
override this.AdvanceBaseSequenceNumber : System.IO.Log.SequenceNumber -> unit
Public Sub AdvanceBaseSequenceNumber (newBaseSequenceNumber As SequenceNumber)

Parâmetros

newBaseSequenceNumber
SequenceNumber

Especifica a nova base SequenceNumber para o tronco. Este deve situar-se no intervalo entre o número de sequência base atual e o último número de sequência do log, inclusive.

Implementações

Exceções

newBaseSequenceNumber não é válido para esta sequência.

Uma cauda ou base de arquivo nova ou existente do registo ativo é inválida.

-ou-

newBaseSequenceNumber não está entre os números base e último desta sequência.

O pedido não pôde ser realizado devido a uma exceção inesperada de I/O.

-ou-

O pedido não pôde ser realizado devido a um erro no dispositivo de E/S.

O registo especificado não tem quaisquer extensões. Uma ou mais extensões devem ser criadas antes de poder ser utilizada uma sequência de registos.

O método era chamado depois de a sequência ter sido eliminada.

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

O acesso para a sequência de registo especificada é negado pelo sistema operativo.

A sequência de discos está cheia.

Exemplos

Este exemplo mostra como usar o AdvanceBaseSequenceNumber método com o TailPinned evento para libertar espaço numa sequência logarítmica.

recordSequence.RetryAppend = true;
recordSequence.TailPinned += new EventHandler<TailPinnedEventArgs>(HandleTailPinned);

void HandleTailPinned(object sender, TailPinnedEventArgs tailPinnedEventArgs)
{
   // tailPinnedEventArgs.TargetSequenceNumber is the target
   // sequence number to free up space to.
   // However, this sequence number is not necessarily valid. We have
   // to use this sequence number as a starting point for finding a
   // valid point within the log to advance toward. You need to
   // identify a record with a sequence number equal to, or greater
   // than TargetSequenceNumber; let's call this
   // realTargetSequenceNumber. Once found, move the base

   recordSequence.AdvanceBaseSequenceNumber(realTargetSequenceNumber);

}

Observações

Este método é frequentemente usado com o TailPinned evento para libertar espaço num registo. O TailPinned evento indica que a cauda da sequência (isto é, o número base da sequência) precisa de ser movida para a frente para libertar espaço. Libertar espaço pode ser feito escrevendo áreas de reinício usando o WriteRestartArea método, ou truncando o log e usando o AdvanceBaseSequenceNumber método para avançar o número base da sequência de um log para o especificado pelo newBaseSequenceNumber parâmetro. O exemplo de código na secção de Exemplo demonstra a segunda abordagem.

Note que chamar este método é o mesmo que definir um novo número base de sequência usando o WriteRestartArea método, exceto que nenhum registo de reinício é escrito no log.

Aplica-se a