LogRecordSequence.TailPinned Événement
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Signale la nécessité de déplacer la fin de la séquence.
public:
virtual event EventHandler<System::IO::Log::TailPinnedEventArgs ^> ^ TailPinned;
public event EventHandler<System.IO.Log.TailPinnedEventArgs> TailPinned;
member this.TailPinned : EventHandler<System.IO.Log.TailPinnedEventArgs>
Public Custom Event TailPinned As EventHandler(Of TailPinnedEventArgs)
Type d'événement
Implémente
Exemples
Cet exemple indique comme utiliser l'événement TailPinned :
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);
}
Remarques
Vous pouvez déclencher cet événement lorsque la séquence d'enregistrement n'a plus d'espace disponible. Lorsque cet événement est déclenché, la fin de la séquence (c'est-à-dire, le numéro de séquence de base) est avancée pour libérer de l'espace.
L'événement peut être déclenché à n'importe quel moment lorsque la séquence d'enregistrement décide qu'elle doit libérer de l'espace, pour une raison quelconque. Par exemple, le moteur de stratégie CLFS peut décider de déclencher l'événement lorsqu'il détermine que les fins de deux clients de journal qui partagent le même fichier journal sont trop éloignées. La libération de l'espace peut se faire par écriture de zones de reprise ou par troncation du journal et utilisation de la méthode AdvanceBaseSequenceNumber pour supprimer de l'espace. L'exemple de code de la section Exemple illustre la deuxième approche.
Vous pouvez également appeler la méthode WriteRestartArea en dehors de l'événement TailPinned pour libérer de l'espace. Une zone de reprise est semblable à un point de contrôle dans d'autres systèmes de traitement de journal. L'appel de cette méthode indique que l'application considère tous les enregistrements antérieurs avant la zone de reprise comme entièrement terminés et utilisables pour de futurs ajouts d'enregistrements. Tout comme pour les autres enregistrements, l'enregistrement écrit par cette méthode requiert de l'espace libre réel dans le journal pour fonctionner.