語言

IRecordSequence.ReadLogRecords 方法

定義

當在導出類別中覆寫時,會回傳序列中可枚舉的記錄集合。

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)

參數

start
SequenceNumber

第一個序列號記錄讀取開始的位置。

logRecordEnum
LogRecordEnumeratorType

一個有效 LogRecordEnumeratorType 值,指定從 a 中讀取紀錄的方式 LogRecordSequence(即正向或後向)。

傳回

一個可枚舉的序列記錄集合。

例外狀況

一或多個引數無效。

讀取記錄時發生 I/O 錯誤。

該方法是在序列被處理後才被呼叫的。

範例

此範例展示了該 ReadLogRecords 方法的使用方法。

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()}");
         }
     }
       }

備註

當在導出類別中覆寫時,會回傳序列中可枚舉的記錄集合。 列舉記錄的順序取決於參數 logRecordEnum 的值。

適用於