IRecordSequence.ReadLogRecords Metodo

Definizione

Quando sottoposto a override in una classe derivata, restituisce una raccolta enumerabile di record nella sequenza.

public:
 System::Collections::Generic::IEnumerable<System::IO::Log::LogRecord ^> ^ ReadLogRecords(System::IO::Log::SequenceNumber start, System::IO::Log::LogRecordEnumeratorType logRecordEnum);
public System.Collections.Generic.IEnumerable<System.IO.Log.LogRecord> ReadLogRecords(System.IO.Log.SequenceNumber start, System.IO.Log.LogRecordEnumeratorType logRecordEnum);
abstract member ReadLogRecords : System.IO.Log.SequenceNumber * System.IO.Log.LogRecordEnumeratorType -> seq<System.IO.Log.LogRecord>
Public Function ReadLogRecords (start As SequenceNumber, logRecordEnum As LogRecordEnumeratorType) As IEnumerable(Of LogRecord)

Parametri

start
SequenceNumber

Numero di sequenza del primo record in cui inizia la lettura.

logRecordEnum
LogRecordEnumeratorType

Valore valido LogRecordEnumeratorType che specifica il modo (ovvero avanti o indietro) in cui i record devono essere letti da un oggetto LogRecordSequence.

Valori restituiti

Raccolta enumerabile di record nella sequenza.

Eccezioni

Uno o più argomenti non sono validi.

Si è verificato un errore di I/O durante la lettura del record.

Il metodo è stato chiamato dopo che la sequenza è stata eliminata.

Esempio

In questo esempio viene illustrato l'uso del ReadLogRecords metodo .

using System;
 using System.IO;
 using System.IO.Log;

 class ReadRecordsSample
 {
     static SequenceNumber AppendRecord(IRecordSequence sequence,
                                        string message,
                                        SequenceNumber user,
                                        SequenceNumber previous)
     {
         MemoryStream data = new MemoryStream();
         BinaryWriter writer = new BinaryWriter(data);
         writer.Write(message);

         ArraySegment<byte>[] segments;
         segments = new ArraySegment<byte>[1];
         segments[0] = new ArraySegment(data.GetBuffer(),
                                        0,
                                        Data.Length);

         return sequence.Append(segments,
                                user,
                                previous,
                                WriteFlags.None);
     }

     public static void Main(string[] args)
     {
         IRecordSequence sequence;
         sequence = new FileIRecordSequence(args[0]);

         SequenceNumber a, b, c, d;

         a = AppendRecord(sequence,
                          "This is record A",
                          SequenceNumber.Invalid,
                          SequenceNumber.Invalid);
         Console.WriteLine($"Record A has sequence number {a}");

         b = AppendRecord(sequence,
                          "This is record B",
                          a,
                          a);
         Console.WriteLine($"Record B has sequence number {b}");

         c = AppendRecord(sequence,
                          "This is record C",
                          a,
                          a);
         Console.WriteLine($"Record C has sequence number {c}");

         d = AppendRecord(sequence,
                          "This is record D",
                          b,
                          c);
         Console.WriteLine($"Record D has sequence number {d}");

         foreach(LogRecord record in
                 sequence.ReadLogRecords(a, ReadDirection.Forward))
         {
             BinaryReader reader = new BinaryReader(record.Data);
             Console.WriteLine($"{record.SequenceNumber}: {reader.ReadString()}");
         }

         foreach(LogRecord record in
                 sequence.ReadLogRecords(d, ReadDirection.User))
         {
             BinaryReader reader = new BinaryReader(record.Data);
             Console.WriteLine($"{record.SequenceNumber}: {reader.ReadString()}");
         }

         foreach(LogRecord record in
                 sequence.ReadLogRecords(d, ReadDirection.Previous))
         {
             BinaryReader reader = new BinaryReader(record.Data);
             Console.WriteLine($"{record.SequenceNumber}: {reader.ReadString()}");
         }
     }
       }

Commenti

Quando sottoposto a override in una classe derivata, restituisce una raccolta enumerabile di record nella sequenza. L'ordine dei record enumerati dipende dal valore del logRecordEnum parametro .

Si applica a