LogRecordSequence.AdvanceBaseSequenceNumber(SequenceNumber) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Avanza el número de secuencia base del registro. Este método no se puede heredar.
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 la nueva SequenceNumber base para el registro. Esto debe quedar en el intervalo entre el número de secuencia base actual y el último número de secuencia de registro, ambos incluidos.
Implementaciones
Excepciones
newBaseSequenceNumber
no es válido para esta secuencia.
Una cola de archivo nueva o existente o la base del registro activo no son válidas.
o bien
newBaseSequenceNumber
no está entre la base y últimos números de secuencia de esta secuencia.
La solicitud no se pudo realizar debido a una excepción de E/S inesperada.
o bien
La solicitud no se pudo realizar debido a un error de dispositivo de E/S.
El registro especificado no tiene ninguna extensión. Se han de crear una o más extensiones antes de que se pueda utilizar una secuencia de registro.
Se llamó al método una vez eliminada la secuencia.
No hay bastante memoria para continuar la ejecución del programa.
El sistema operativo ha denegado el acceso a la secuencia de registro especificado.
La secuencia del registro está completa.
Ejemplos
Este ejemplo muestra cómo utilizar el método AdvanceBaseSequenceNumber con el evento TailPinned para liberar espacio en una secuencia de registro.
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);
}
Comentarios
Este método se utiliza a menudo con el evento TailPinned para liberar espacio en un registro. El evento TailPinned indica que es necesario mover hacia delante la cola de la secuencia (es decir, el número de secuencia base) para liberar espacio. Para liberar espacio se pueden escribir áreas de reinicio mediante el método WriteRestartArea, o mediante el truncado del registro y el uso del método AdvanceBaseSequenceNumber para avanzar el número de secuencia base de un registro hasta el especificado mediante el parámetro newBaseSequenceNumber
. El ejemplo de código en la sección Ejemplo muestra el segundo enfoque.
Observe que llamar a este método es igual que establecer un nuevo número de secuencia base mediante el método WriteRestartArea, salvo que no se escribe ninguna entrada de reinicio en el registro.